mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
47 lines
1.2 KiB
C#
47 lines
1.2 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Controls;
|
|
|
|
namespace MapControl.UiTools
|
|
{
|
|
public abstract partial class MapMenuItem : MenuItem
|
|
{
|
|
public abstract bool GetIsChecked(MapBase map);
|
|
|
|
public abstract Task ExecuteAsync(MapBase map);
|
|
|
|
protected MapMenuItem()
|
|
{
|
|
Loaded += (s, e) =>
|
|
{
|
|
if (DataContext is MapBase map)
|
|
{
|
|
IsChecked = GetIsChecked(map);
|
|
}
|
|
};
|
|
|
|
Click += async (s, e) =>
|
|
{
|
|
if (DataContext is MapBase map)
|
|
{
|
|
await ExecuteAsync(map);
|
|
|
|
foreach (var item in ParentMenuItems)
|
|
{
|
|
item.IsChecked = item.GetIsChecked(map);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
public string Text
|
|
{
|
|
get => Header as string;
|
|
set => Header = value;
|
|
}
|
|
|
|
protected IEnumerable<MapMenuItem> ParentMenuItems => ((ItemsControl)Parent).Items.OfType<MapMenuItem>();
|
|
}
|
|
}
|