From acecccf381aba7a9385635afb7065b621d68d5ca Mon Sep 17 00:00:00 2001 From: ClemensFischer Date: Sat, 6 Sep 2025 12:25:47 +0200 Subject: [PATCH] MapMenuItems --- MapUiTools/Shared/MapLayerMenuItem.cs | 39 ++++++++++++---------- MapUiTools/Shared/MapProjectionMenuItem.cs | 13 +++----- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/MapUiTools/Shared/MapLayerMenuItem.cs b/MapUiTools/Shared/MapLayerMenuItem.cs index 4b17abfa..ad147664 100644 --- a/MapUiTools/Shared/MapLayerMenuItem.cs +++ b/MapUiTools/Shared/MapLayerMenuItem.cs @@ -27,7 +27,7 @@ namespace MapControl.UiTools #if AVALONIA [Content] #endif - public virtual FrameworkElement MapLayer { get; set; } + public FrameworkElement MapLayer { get; set; } public Func> MapLayerFactory { get; set; } @@ -38,12 +38,14 @@ namespace MapControl.UiTools public override async Task Execute(MapBase map) { - var layer = MapLayer ?? (MapLayer = await MapLayerFactory.Invoke()); - - if (layer != null) + if (MapLayer == null) { - map.MapLayer = layer; - IsChecked = true; + MapLayer = await MapLayerFactory?.Invoke(); + } + + if (MapLayer != null) + { + map.MapLayer = MapLayer; } } } @@ -52,37 +54,38 @@ namespace MapControl.UiTools { public override async Task Execute(MapBase map) { - var layer = MapLayer ?? (MapLayer = await MapLayerFactory.Invoke()); - - if (layer != null) + if (MapLayer == null) { - if (map.Children.Contains(layer)) + MapLayer = await MapLayerFactory?.Invoke(); + } + + if (MapLayer != null) + { + if (map.Children.Contains(MapLayer)) { - map.Children.Remove(layer); + map.Children.Remove(MapLayer); } else { var index = 1; - foreach (var itemLayer in ParentMenuItems + foreach (var mapLayer in ParentMenuItems .OfType() .Select(item => item.MapLayer) - .Where(itemLayer => itemLayer != null)) + .Where(mapLayer => mapLayer != null)) { - if (itemLayer == layer) + if (mapLayer == MapLayer) { - map.Children.Insert(index, itemLayer); + map.Children.Insert(index, mapLayer); break; } - if (map.Children.Contains(itemLayer)) + if (map.Children.Contains(mapLayer)) { index++; } } } - - IsChecked = true; } } } diff --git a/MapUiTools/Shared/MapProjectionMenuItem.cs b/MapUiTools/Shared/MapProjectionMenuItem.cs index 50e002e8..9e5cf1e9 100644 --- a/MapUiTools/Shared/MapProjectionMenuItem.cs +++ b/MapUiTools/Shared/MapProjectionMenuItem.cs @@ -27,28 +27,23 @@ namespace MapControl.UiTools protected override bool GetIsChecked(MapBase map) { - return map.MapProjection.CrsId == MapProjection; + return map.MapProjection.ToString() == MapProjection; } public override Task Execute(MapBase map) { - bool success = true; - - if (map.MapProjection.CrsId != MapProjection) + if (!GetIsChecked(map)) { try { - map.MapProjection = MapProjectionFactory.Instance.GetProjection(MapProjection); + map.MapProjection = MapControl.MapProjection.Parse(MapProjection); } catch (Exception ex) { - Debug.WriteLine($"{nameof(MapProjectionFactory)}: {ex.Message}"); - success = false; + Debug.WriteLine($"MapProjection.Parse: {ex.Message}"); } } - IsChecked = success; - return Task.CompletedTask; } }