mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Execute method implementation
This commit is contained in:
parent
45ab678d5b
commit
388e446b96
|
|
@ -26,7 +26,7 @@ namespace MapControl.UiTools
|
|||
set => Header = value;
|
||||
}
|
||||
|
||||
public abstract Task<bool> Execute(MapBase map);
|
||||
public abstract Task Execute(MapBase map);
|
||||
|
||||
protected IEnumerable<MapMenuItem> ParentMenuItems => ((ItemsControl)Parent).Items.OfType<MapMenuItem>();
|
||||
|
||||
|
|
|
|||
|
|
@ -35,8 +35,10 @@ namespace MapControl.UiTools
|
|||
{
|
||||
Click += async (s, e) =>
|
||||
{
|
||||
if (DataContext is MapBase map && await Execute(map))
|
||||
if (DataContext is MapBase map)
|
||||
{
|
||||
await Execute(map);
|
||||
|
||||
foreach (var item in ParentMenuItems.OfType<MapLayerMenuItem>())
|
||||
{
|
||||
item.IsChecked = map.Children.Contains(item.MapLayer);
|
||||
|
|
@ -45,58 +47,54 @@ namespace MapControl.UiTools
|
|||
};
|
||||
}
|
||||
|
||||
public override async Task<bool> Execute(MapBase map)
|
||||
public override async Task Execute(MapBase map)
|
||||
{
|
||||
var layer = MapLayer ?? (MapLayer = await MapLayerFactory.Invoke());
|
||||
|
||||
if (layer == null)
|
||||
if (layer != null)
|
||||
{
|
||||
return false;
|
||||
map.MapLayer = layer;
|
||||
IsChecked = true;
|
||||
}
|
||||
|
||||
map.MapLayer = layer;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class MapOverlayMenuItem : MapLayerMenuItem
|
||||
{
|
||||
public override async Task<bool> Execute(MapBase map)
|
||||
public override async Task Execute(MapBase map)
|
||||
{
|
||||
var layer = MapLayer ?? (MapLayer = await MapLayerFactory.Invoke());
|
||||
|
||||
if (layer == null)
|
||||
if (layer != null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (map.Children.Contains(layer))
|
||||
{
|
||||
map.Children.Remove(layer);
|
||||
}
|
||||
else
|
||||
{
|
||||
var index = 1;
|
||||
|
||||
foreach (var itemLayer in ParentMenuItems?
|
||||
.OfType<MapOverlayMenuItem>()
|
||||
.Select(item => item.MapLayer)
|
||||
.Where(itemLayer => itemLayer != null))
|
||||
if (map.Children.Contains(layer))
|
||||
{
|
||||
if (itemLayer == layer)
|
||||
{
|
||||
map.Children.Insert(index, itemLayer);
|
||||
break;
|
||||
}
|
||||
map.Children.Remove(layer);
|
||||
}
|
||||
else
|
||||
{
|
||||
var index = 1;
|
||||
|
||||
if (map.Children.Contains(itemLayer))
|
||||
foreach (var itemLayer in ParentMenuItems?
|
||||
.OfType<MapOverlayMenuItem>()
|
||||
.Select(item => item.MapLayer)
|
||||
.Where(itemLayer => itemLayer != null))
|
||||
{
|
||||
index++;
|
||||
if (itemLayer == layer)
|
||||
{
|
||||
map.Children.Insert(index, itemLayer);
|
||||
break;
|
||||
}
|
||||
|
||||
if (map.Children.Contains(itemLayer))
|
||||
{
|
||||
index++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
IsChecked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,8 +30,10 @@ namespace MapControl.UiTools
|
|||
{
|
||||
Click += async (s, e) =>
|
||||
{
|
||||
if (DataContext is MapBase map && await Execute(map))
|
||||
if (DataContext is MapBase map)
|
||||
{
|
||||
await Execute(map);
|
||||
|
||||
foreach (var item in ParentMenuItems.OfType<MapProjectionMenuItem>())
|
||||
{
|
||||
item.IsChecked = map.MapProjection.CrsId == item.MapProjection;
|
||||
|
|
@ -40,7 +42,7 @@ namespace MapControl.UiTools
|
|||
};
|
||||
}
|
||||
|
||||
public override Task<bool> Execute(MapBase map)
|
||||
public override Task Execute(MapBase map)
|
||||
{
|
||||
bool success = true;
|
||||
|
||||
|
|
@ -57,7 +59,9 @@ namespace MapControl.UiTools
|
|||
}
|
||||
}
|
||||
|
||||
return Task.FromResult(success);
|
||||
IsChecked = success;
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,11 +33,9 @@ namespace MapControl.UiTools
|
|||
{
|
||||
DataContext = Map;
|
||||
|
||||
if (Items.Count > 0 &&
|
||||
Items[0] is MapMenuItem item &&
|
||||
await item.Execute(Map))
|
||||
if (Items.Count > 0 && Items[0] is MapMenuItem item)
|
||||
{
|
||||
item.IsChecked = true;
|
||||
await item.Execute(Map);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ namespace MapControl.UiTools
|
|||
set => Header = value;
|
||||
}
|
||||
|
||||
public abstract Task<bool> Execute(MapBase map);
|
||||
public abstract Task Execute(MapBase map);
|
||||
|
||||
protected IEnumerable<MapMenuItem> ParentMenuItems => ((ItemsControl)Parent).Items.OfType<MapMenuItem>();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ namespace MapControl.UiTools
|
|||
{
|
||||
public abstract class MapMenuItem : ToggleMenuFlyoutItem
|
||||
{
|
||||
public abstract Task<bool> Execute(MapBase map);
|
||||
public abstract Task Execute(MapBase map);
|
||||
|
||||
protected IEnumerable<MapMenuItem> ParentMenuItems
|
||||
=> ((Panel)VisualTreeHelper.GetParent(this)).Children.OfType<MapMenuItem>();
|
||||
|
|
|
|||
Loading…
Reference in a new issue