From 9ee2fde44e4dc5b7df49fe0970ac78d916b86fde Mon Sep 17 00:00:00 2001 From: Aleksandar Toplek Date: Thu, 1 Dec 2016 15:55:47 +0100 Subject: [PATCH] Fixed WPF example layer changed handler --- SharpMap.UI.WPF/SharpMapHost.cs | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/SharpMap.UI.WPF/SharpMapHost.cs b/SharpMap.UI.WPF/SharpMapHost.cs index 5aef4080..ff956d29 100644 --- a/SharpMap.UI.WPF/SharpMapHost.cs +++ b/SharpMap.UI.WPF/SharpMapHost.cs @@ -403,29 +403,33 @@ private void OnMapLayerChanged(object sender, NotifyCollectionChangedEventArgs e switch (e.Action) { case NotifyCollectionChangedAction.Add: - { - var layers = sender as ObservableCollection; - if (layers != null) { - foreach (var layer in layers.Where(layer => !_mapBox.Map.Layers.Contains(layer))) + var layers = e.NewItems; + if (layers != null) { - _mapBox.Map.Layers.Add(layer); + foreach (var layer in layers) + { + var castedLayer = layer as ILayer; + if (castedLayer != null && MapBox.Map.Layers.All(l => l.LayerName != castedLayer.LayerName)) + MapBox.Map.Layers.Add(castedLayer); + } } } - } break; case NotifyCollectionChangedAction.Remove: - { - var layers = sender as ObservableCollection; - if (layers != null) { - foreach (var layer in layers.Where(layer => _mapBox.Map.Layers.Contains(layer))) + var layers = e.OldItems; + if (layers != null) { - _mapBox.Map.Layers.Remove(layer); + foreach (var layer in layers) + { + var castedLayer = layer as ILayer; + if (castedLayer != null && MapBox.Map.Layers.Any(l => l.LayerName == castedLayer.LayerName)) + MapBox.Map.Layers.Remove(castedLayer); + } } } - } break; case NotifyCollectionChangedAction.Reset: