2025-03-21 17:22:07 +01:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
2025-03-21 18:03:57 +01:00
|
|
|
|
using System.Threading.Tasks;
|
2025-03-21 17:22:07 +01:00
|
|
|
|
#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
|
|
|
|
|
|
{
|
2025-03-21 18:03:57 +01:00
|
|
|
|
public abstract class MapMenuItem : ToggleMenuFlyoutItem
|
2025-03-21 17:22:07 +01:00
|
|
|
|
{
|
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 Execute(map);
|
|
|
|
|
|
|
|
|
|
|
|
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; }
|
2025-03-26 19:58:47 +01:00
|
|
|
|
|
|
|
|
|
|
protected abstract bool GetIsChecked(MapBase map);
|
|
|
|
|
|
|
|
|
|
|
|
public abstract Task Execute(MapBase map);
|
2025-03-21 17:22:07 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|