mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Update MapLayersMenuButton.cs
This commit is contained in:
parent
3344ef73dc
commit
7e7f77afe6
|
|
@ -2,6 +2,7 @@
|
||||||
// © 2022 Clemens Fischer
|
// © 2022 Clemens Fischer
|
||||||
// Licensed under the Microsoft Public License (Ms-PL)
|
// Licensed under the Microsoft Public License (Ms-PL)
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Collections.Specialized;
|
using System.Collections.Specialized;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
@ -27,6 +28,9 @@ namespace MapControl.UiTools
|
||||||
{
|
{
|
||||||
public string Text { get; set; }
|
public string Text { get; set; }
|
||||||
public UIElement Layer { get; set; }
|
public UIElement Layer { get; set; }
|
||||||
|
public Func<UIElement> LayerFactory { get; set; }
|
||||||
|
|
||||||
|
public UIElement GetLayer() => Layer ?? (Layer = LayerFactory?.Invoke());
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WINUI || UWP
|
#if WINUI || UWP
|
||||||
|
|
@ -67,10 +71,10 @@ namespace MapControl.UiTools
|
||||||
|
|
||||||
foreach (var item in MapLayers)
|
foreach (var item in MapLayers)
|
||||||
{
|
{
|
||||||
menu.Items.Add(CreateMenuItem(item.Text, item.Layer, MapLayerClicked));
|
menu.Items.Add(CreateMenuItem(item.Text, item, MapLayerClicked));
|
||||||
}
|
}
|
||||||
|
|
||||||
var initialLayer = MapLayers.Select(l => l.Layer).FirstOrDefault();
|
var initialLayer = MapLayers.Select(l => l.GetLayer()).FirstOrDefault();
|
||||||
|
|
||||||
if (MapOverlays.Count > 0)
|
if (MapOverlays.Count > 0)
|
||||||
{
|
{
|
||||||
|
|
@ -81,7 +85,7 @@ namespace MapControl.UiTools
|
||||||
|
|
||||||
foreach (var item in MapOverlays)
|
foreach (var item in MapOverlays)
|
||||||
{
|
{
|
||||||
menu.Items.Add(CreateMenuItem(item.Text, item.Layer, MapOverlayClicked));
|
menu.Items.Add(CreateMenuItem(item.Text, item, MapOverlayClicked));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -95,17 +99,17 @@ namespace MapControl.UiTools
|
||||||
private void MapLayerClicked(object sender, RoutedEventArgs e)
|
private void MapLayerClicked(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
var item = (FrameworkElement)sender;
|
var item = (FrameworkElement)sender;
|
||||||
var layer = (UIElement)item.Tag;
|
var mapLayerItem = (MapLayerItem)item.Tag;
|
||||||
|
|
||||||
SetMapLayer(layer);
|
SetMapLayer(mapLayerItem.GetLayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MapOverlayClicked(object sender, RoutedEventArgs e)
|
private void MapOverlayClicked(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
var item = (FrameworkElement)sender;
|
var item = (FrameworkElement)sender;
|
||||||
var layer = (UIElement)item.Tag;
|
var mapLayerItem = (MapLayerItem)item.Tag;
|
||||||
|
|
||||||
ToggleMapOverlay(layer);
|
ToggleMapOverlay(mapLayerItem.GetLayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetMapLayer(UIElement layer)
|
private void SetMapLayer(UIElement layer)
|
||||||
|
|
@ -129,7 +133,7 @@ namespace MapControl.UiTools
|
||||||
{
|
{
|
||||||
int index = 1;
|
int index = 1;
|
||||||
|
|
||||||
foreach (var overlay in MapOverlays.Select(l => l.Layer))
|
foreach (var overlay in MapOverlays.Select(o => o.Layer).Where(o => o != null))
|
||||||
{
|
{
|
||||||
if (overlay == layer)
|
if (overlay == layer)
|
||||||
{
|
{
|
||||||
|
|
@ -151,7 +155,7 @@ namespace MapControl.UiTools
|
||||||
{
|
{
|
||||||
foreach (var item in GetMenuItems())
|
foreach (var item in GetMenuItems())
|
||||||
{
|
{
|
||||||
item.IsChecked = Map.Children.Contains((UIElement)item.Tag);
|
item.IsChecked = Map.Children.Contains(((MapLayerItem)item.Tag).Layer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue