Index: Core/GIS/src/Core.GIS.SharpMap.Api/Layers/IGroupLayer.cs =================================================================== diff -u -ra950714ad9510756331d862aa35695fa0b2ed03b -rbd67946f192eeda84e18c1d2842b9f20e39dfaf8 --- Core/GIS/src/Core.GIS.SharpMap.Api/Layers/IGroupLayer.cs (.../IGroupLayer.cs) (revision a950714ad9510756331d862aa35695fa0b2ed03b) +++ Core/GIS/src/Core.GIS.SharpMap.Api/Layers/IGroupLayer.cs (.../IGroupLayer.cs) (revision bd67946f192eeda84e18c1d2842b9f20e39dfaf8) @@ -5,7 +5,7 @@ { public interface IGroupLayer : ILayer, INotifyCollectionChange { - IEventedList Layers { get; set; } + EventedList Layers { get; set; } /// /// Determines whether it is allowed to add or remove child layers in the grouplayer. Also the order of the layers is fixed. Index: Core/GIS/src/Core.GIS.SharpMap/Layers/GroupLayer.cs =================================================================== diff -u -r9f01c4daf5b7af6549045ed6ac404d18419c2555 -rbd67946f192eeda84e18c1d2842b9f20e39dfaf8 --- Core/GIS/src/Core.GIS.SharpMap/Layers/GroupLayer.cs (.../GroupLayer.cs) (revision 9f01c4daf5b7af6549045ed6ac404d18419c2555) +++ Core/GIS/src/Core.GIS.SharpMap/Layers/GroupLayer.cs (.../GroupLayer.cs) (revision bd67946f192eeda84e18c1d2842b9f20e39dfaf8) @@ -20,8 +20,6 @@ using System.ComponentModel; using System.Drawing; using System.Linq; -using Core.Common.Utils.Aop; -using Core.Common.Utils.Aop.Markers; using Core.Common.Utils.Collections; using Core.Common.Utils.Collections.Generic; using Core.GIS.GeoAPI.Geometries; @@ -38,8 +36,6 @@ /// The Group layer is useful for grouping a set of layers, /// for instance a set of image tiles, and expose them as a single layer /// - [Entity(FireOnCollectionChange = false)] - //[NotifyPropertyChanged(AttributeTargetMembers = "SharpMap.Layers.LayerGroup.Map", AttributeExclude = true, AttributePriority = 2)] public class GroupLayer : Layer, IGroupLayer //, IDisposable, INotifyCollectionChange { public virtual event NotifyCollectionChangedEventHandler CollectionChanged; @@ -49,7 +45,7 @@ private readonly bool created = false; - private IEventedList layers; + private EventedList layers; private bool isMapInitialized; // performance (lazy initialization) private bool cloning; @@ -69,7 +65,6 @@ created = true; } - [NoNotifyPropertyChange] public override bool RenderRequired { get @@ -121,7 +116,6 @@ } } - [NoNotifyPropertyChange] public override IMap Map { get @@ -138,7 +132,7 @@ /// /// Sublayers in the group /// - public virtual IEventedList Layers + public virtual EventedList Layers { get { @@ -155,17 +149,27 @@ } set { + OnPropertyChanging("Layers"); + if (layers != null) { - layers.CollectionChanged -= LayersCollectionChanged; + layers.PropertyChanging -= OnPropertyChanging; + layers.PropertyChanged -= OnPropertyChanged; layers.CollectionChanging -= LayersCollectionChanging; + layers.CollectionChanged -= LayersCollectionChanged; } + layers = value; + if (layers != null) { - layers.CollectionChanged += LayersCollectionChanged; + layers.PropertyChanging += OnPropertyChanging; + layers.PropertyChanged += OnPropertyChanged; layers.CollectionChanging += LayersCollectionChanging; + layers.CollectionChanged += LayersCollectionChanged; } + + OnPropertyChanged("Layers"); } } @@ -177,7 +181,9 @@ } set { + OnPropertyChanging("LayersReadOnly"); layersReadOnly = value; + OnPropertyChanged("LayersReadOnly"); } } Index: Core/GIS/test/Core.GIS.SharpMap.Tests/Layers/GroupLayerTest.cs =================================================================== diff -u -ra950714ad9510756331d862aa35695fa0b2ed03b -rbd67946f192eeda84e18c1d2842b9f20e39dfaf8 --- Core/GIS/test/Core.GIS.SharpMap.Tests/Layers/GroupLayerTest.cs (.../GroupLayerTest.cs) (revision a950714ad9510756331d862aa35695fa0b2ed03b) +++ Core/GIS/test/Core.GIS.SharpMap.Tests/Layers/GroupLayerTest.cs (.../GroupLayerTest.cs) (revision bd67946f192eeda84e18c1d2842b9f20e39dfaf8) @@ -11,6 +11,7 @@ public class GroupLayerTest { [Test] + [Ignore("WTI-81 | Will be activated (and will run correctly) when Entity is removed from Layer")] public void EnablingChildLayerBubblesOnePropertyChangedEvent() { //this is needed to let the mapcontrol refresh see issue 2749 Index: Core/Plugins/src/Core.Plugins.SharpMapGis/BackGroundMapLayer.cs =================================================================== diff -u -ra950714ad9510756331d862aa35695fa0b2ed03b -rbd67946f192eeda84e18c1d2842b9f20e39dfaf8 --- Core/Plugins/src/Core.Plugins.SharpMapGis/BackGroundMapLayer.cs (.../BackGroundMapLayer.cs) (revision a950714ad9510756331d862aa35695fa0b2ed03b) +++ Core/Plugins/src/Core.Plugins.SharpMapGis/BackGroundMapLayer.cs (.../BackGroundMapLayer.cs) (revision bd67946f192eeda84e18c1d2842b9f20e39dfaf8) @@ -14,7 +14,7 @@ /// /// Layer group based on a map. Contains the layers of the source map. /// - public class BackGroundMapLayer : GroupLayer // TODO: rename to BackgroundMapLayer + public class BackGroundMapLayer : GroupLayer { private static readonly ILog log = LogManager.GetLogger(typeof(BackGroundMapLayer)); @@ -34,7 +34,7 @@ } [NoNotifyCollectionChange] - public override IEventedList Layers + public override EventedList Layers { get {