Index: Core/GIS/src/Core.GIS.SharpMap/Rendering/Thematics/CustomTheme.cs =================================================================== diff -u -r29074485032e73e932140ea9980c21d929e4dc08 -ra60bbf1de4ed3d809e8325c0b7359f7786f4a16d --- Core/GIS/src/Core.GIS.SharpMap/Rendering/Thematics/CustomTheme.cs (.../CustomTheme.cs) (revision 29074485032e73e932140ea9980c21d929e4dc08) +++ Core/GIS/src/Core.GIS.SharpMap/Rendering/Thematics/CustomTheme.cs (.../CustomTheme.cs) (revision a60bbf1de4ed3d809e8325c0b7359f7786f4a16d) @@ -94,7 +94,21 @@ set { OnPropertyChanging("DefaultStyle"); + + if (defaultStyle != null) + { + defaultStyle.PropertyChanging -= OnPropertyChanging; + defaultStyle.PropertyChanged -= OnPropertyChanged; + } + defaultStyle = value; + + if (defaultStyle != null) + { + defaultStyle.PropertyChanging += OnPropertyChanging; + defaultStyle.PropertyChanged += OnPropertyChanged; + } + OnPropertyChanged("DefaultStyle"); } } @@ -223,24 +237,40 @@ public event PropertyChangingEventHandler PropertyChanging; - protected void OnPropertyChanging(string propertyName) + private void OnPropertyChanging(string propertyName) { if (PropertyChanging != null) { PropertyChanging(this, new PropertyChangingEventArgs(propertyName)); } } + private void OnPropertyChanging(object sender, PropertyChangingEventArgs e) + { + if (PropertyChanging != null) + { + PropertyChanging(sender, e); + } + } + public event PropertyChangedEventHandler PropertyChanged; - protected void OnPropertyChanged(string propertyName) + private void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } + private void OnPropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (PropertyChanged != null) + { + PropertyChanged(sender, e); + } + } + #endregion } } \ No newline at end of file Index: Core/GIS/test/Core.GIS.SharpMap.Tests/Core.GIS.SharpMap.Tests.csproj =================================================================== diff -u -rb6ffe77a74979f9893a1b338a13acce47c57feda -ra60bbf1de4ed3d809e8325c0b7359f7786f4a16d --- Core/GIS/test/Core.GIS.SharpMap.Tests/Core.GIS.SharpMap.Tests.csproj (.../Core.GIS.SharpMap.Tests.csproj) (revision b6ffe77a74979f9893a1b338a13acce47c57feda) +++ Core/GIS/test/Core.GIS.SharpMap.Tests/Core.GIS.SharpMap.Tests.csproj (.../Core.GIS.SharpMap.Tests.csproj) (revision a60bbf1de4ed3d809e8325c0b7359f7786f4a16d) @@ -137,6 +137,7 @@ + Index: Core/GIS/test/Core.GIS.SharpMap.Tests/Rendering/Thematics/CategorialThemeTest.cs =================================================================== diff -u -r0c6e0021eebf932c06c7f6905dd3abad31ba60d6 -ra60bbf1de4ed3d809e8325c0b7359f7786f4a16d --- Core/GIS/test/Core.GIS.SharpMap.Tests/Rendering/Thematics/CategorialThemeTest.cs (.../CategorialThemeTest.cs) (revision 0c6e0021eebf932c06c7f6905dd3abad31ba60d6) +++ Core/GIS/test/Core.GIS.SharpMap.Tests/Rendering/Thematics/CategorialThemeTest.cs (.../CategorialThemeTest.cs) (revision a60bbf1de4ed3d809e8325c0b7359f7786f4a16d) @@ -180,13 +180,13 @@ } [Test] - public void CategorialThemeItemBubblesPropertyChangesOfDefaultStyle() + public void CategorialThemeBubblesPropertyChangesOfDefaultStyle() { var counter = 0; var defaultStyle = new VectorStyle(); - var categorialThemeItem = new CategorialTheme { DefaultStyle = defaultStyle }; + var categorialTheme = new CategorialTheme { DefaultStyle = defaultStyle }; - ((INotifyPropertyChanged) categorialThemeItem).PropertyChanged += (sender, e) => + ((INotifyPropertyChanged) categorialTheme).PropertyChanged += (sender, e) => { if (sender is IStyle) { Index: Core/GIS/test/Core.GIS.SharpMap.Tests/Rendering/Thematics/CustomThemeTest.cs =================================================================== diff -u --- Core/GIS/test/Core.GIS.SharpMap.Tests/Rendering/Thematics/CustomThemeTest.cs (revision 0) +++ Core/GIS/test/Core.GIS.SharpMap.Tests/Rendering/Thematics/CustomThemeTest.cs (revision a60bbf1de4ed3d809e8325c0b7359f7786f4a16d) @@ -0,0 +1,32 @@ +using System.ComponentModel; +using Core.GIS.SharpMap.Api; +using Core.GIS.SharpMap.Rendering.Thematics; +using Core.GIS.SharpMap.Styles; +using NUnit.Framework; + +namespace Core.GIS.SharpMap.Tests.Rendering.Thematics +{ + [TestFixture] + public class CustomThemeTest + { + [Test] + public void CustomThemeBubblesPropertyChangesOfDefaultStyle() + { + var counter = 0; + var defaultStyle = new VectorStyle(); + var customTheme = new CustomTheme(null) { DefaultStyle = defaultStyle }; + + ((INotifyPropertyChanged) customTheme).PropertyChanged += (sender, e) => + { + if (sender is IStyle) + { + counter++; + } + }; + + defaultStyle.EnableOutline = true; + + Assert.AreEqual(1, counter); + } + } +}