XAML-Map-Control/MapUiTools/WinUI/MapMenuItem.WinUI.cs

49 lines
1.2 KiB
C#
Raw Normal View History

using System.Collections.Generic;
using System.Linq;
2025-03-21 18:03:57 +01:00
using System.Threading.Tasks;
#if UWP
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
#else
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Media;
#endif
namespace MapControl.UiTools
{
public abstract partial class MapMenuItem : ToggleMenuFlyoutItem
{
public abstract bool GetIsChecked(MapBase map);
public abstract Task ExecuteAsync(MapBase map);
2025-03-24 18:59:58 +01:00
protected MapMenuItem()
{
2025-03-26 19:58:47 +01:00
Loaded += (s, e) =>
{
ParentMenuItems = ((Panel)VisualTreeHelper.GetParent(this)).Children.OfType<MapMenuItem>().ToList();
2025-03-24 18:59:58 +01:00
2025-03-26 19:58:47 +01:00
if (DataContext is MapBase map)
{
IsChecked = GetIsChecked(map);
}
};
Click += async (s, e) =>
{
if (DataContext is MapBase map)
{
await ExecuteAsync(map);
2025-03-26 19:58:47 +01:00
foreach (var item in ParentMenuItems)
{
item.IsChecked = item.GetIsChecked(map);
}
}
};
}
2025-03-21 18:03:57 +01:00
2025-03-24 18:59:58 +01:00
protected IList<MapMenuItem> ParentMenuItems { get; private set; }
}
}