MapItemsControl SelectionChanged handling in sample applications

This commit is contained in:
ClemensFischer 2024-05-31 10:40:29 +02:00
parent f78e7e73c4
commit 70bc9b89ac
7 changed files with 25 additions and 3 deletions

View file

@ -19,6 +19,7 @@
<map:MapItemsControl ItemsSource="{Binding Pushpins}" <map:MapItemsControl ItemsSource="{Binding Pushpins}"
SelectedItem="{Binding SelectedPushpin}" SelectedItem="{Binding SelectedPushpin}"
SelectionMode="Multiple" SelectionMode="Multiple"
SelectionChanged="MapItemsControlSelectionChanged"
DoubleTapped="MapItemsControlDoubleTapped"> DoubleTapped="MapItemsControlDoubleTapped">
<map:MapItemsControl.Styles> <map:MapItemsControl.Styles>
<Style Selector="map|MapItem"> <Style Selector="map|MapItem">

View file

@ -4,7 +4,9 @@ using Avalonia.Media;
using MapControl; using MapControl;
using MapControl.UiTools; using MapControl.UiTools;
using System; using System;
using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq;
namespace SampleApplication namespace SampleApplication
{ {
@ -72,6 +74,11 @@ namespace SampleApplication
partial void AddTestLayers(); partial void AddTestLayers();
private void MapItemsControlSelectionChanged(object? sender, SelectionChangedEventArgs e)
{
Debug.WriteLine("SelectedItems: " + string.Join(", ", ((MapItemsControl)sender).SelectedItems.OfType<PointItem>().Select(item => item.Name)));
}
private void MapItemsControlDoubleTapped(object sender, TappedEventArgs e) private void MapItemsControlDoubleTapped(object sender, TappedEventArgs e)
{ {
e.Handled = true; // prevent MapDoubleTapped e.Handled = true; // prevent MapDoubleTapped

View file

@ -29,7 +29,7 @@ namespace SampleApplication
set set
{ {
selectedPushpin = value; selectedPushpin = value;
Debug.WriteLine(selectedPushpin?.Name); Debug.WriteLine("SelectedPushpin: " + (selectedPushpin?.Name ?? "None"));
} }
} }

View file

@ -177,6 +177,7 @@
SelectedItem="{Binding SelectedPushpin, Mode=TwoWay}" SelectedItem="{Binding SelectedPushpin, Mode=TwoWay}"
SelectionMode="Multiple" SelectionMode="Multiple"
LocationMemberPath="Location" LocationMemberPath="Location"
SelectionChanged="MapItemsControlSelectionChanged"
DoubleTapped="MapItemsControlDoubleTapped"/> DoubleTapped="MapItemsControlDoubleTapped"/>
<map:MapPath Location="53.5,8.2" Stroke="Blue" StrokeThickness="3" Fill="#1F007F00"> <map:MapPath Location="53.5,8.2" Stroke="Blue" StrokeThickness="3" Fill="#1F007F00">

View file

@ -3,6 +3,7 @@ using MapControl.UiTools;
using Microsoft.UI; using Microsoft.UI;
using Microsoft.UI.Input; using Microsoft.UI.Input;
using Microsoft.UI.Xaml; using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Media;
using System; using System;
@ -82,6 +83,11 @@ namespace SampleApplication
partial void AddTestLayers(); partial void AddTestLayers();
private void MapItemsControlSelectionChanged(object sender, SelectionChangedEventArgs e)
{
Debug.WriteLine("SelectedItems: " + string.Join(", ", ((MapItemsControl)sender).SelectedItems.OfType<PointItem>().Select(item => item.Name)));
}
private void MapItemsControlDoubleTapped(object sender, DoubleTappedRoutedEventArgs e) private void MapItemsControlDoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{ {
e.Handled = true; // prevent MapDoubleTapped e.Handled = true; // prevent MapDoubleTapped

View file

@ -137,7 +137,8 @@
<map:MapItemsControl ItemContainerStyle="{StaticResource PushpinItemStyle}" <map:MapItemsControl ItemContainerStyle="{StaticResource PushpinItemStyle}"
ItemsSource="{Binding Pushpins}" ItemsSource="{Binding Pushpins}"
SelectedItem="{Binding SelectedPushpin}" SelectedItem="{Binding SelectedPushpin}"
SelectionMode="Multiple"/> SelectionMode="Multiple"
SelectionChanged="MapItemsControlSelectionChanged"/>
<map:Pushpin AutoCollapse="True" Location="65,-18" Content="Iceland"/> <map:Pushpin AutoCollapse="True" Location="65,-18" Content="Iceland"/>
<map:Pushpin AutoCollapse="True" Location="71,25" Content="Norway"/> <map:Pushpin AutoCollapse="True" Location="71,25" Content="Norway"/>

View file

@ -6,6 +6,7 @@ using System.Globalization;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Windows; using System.Windows;
using System.Windows.Controls;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
@ -20,7 +21,7 @@ namespace SampleApplication
//TileImageLoader.Cache = new MapControl.Caching.SQLiteCache(TileImageLoader.DefaultCacheFolder); //TileImageLoader.Cache = new MapControl.Caching.SQLiteCache(TileImageLoader.DefaultCacheFolder);
//TileImageLoader.Cache = new RedisCache(Options.Create(new RedisCacheOptions //TileImageLoader.Cache = new RedisCache(Options.Create(new RedisCacheOptions
//{ //{
// Configuration = "localhost:6379", // Configuration = "T400:6379",
// InstanceName = "MapTileCache/" // InstanceName = "MapTileCache/"
//})); //}));
@ -82,6 +83,11 @@ namespace SampleApplication
partial void AddTestLayers(); partial void AddTestLayers();
private void MapItemsControlSelectionChanged(object sender, SelectionChangedEventArgs e)
{
Debug.WriteLine("SelectedItems: " + string.Join(", ", ((MapItemsControl)sender).SelectedItems.OfType<PointItem>().Select(item => item.Name)));
}
private void ResetHeadingButtonClick(object sender, RoutedEventArgs e) private void ResetHeadingButtonClick(object sender, RoutedEventArgs e)
{ {
map.TargetHeading = 0d; map.TargetHeading = 0d;