@@ -62,12 +62,14 @@ public abstract class ObservableValidator : ObservableObject, INotifyDataErrorIn
6262 /// </remarks>
6363 protected bool SetProperty < T > ( ref T field , T newValue , bool validate , [ CallerMemberName ] string ? propertyName = null )
6464 {
65- if ( validate )
65+ bool propertyChanged = SetProperty ( ref field , newValue , propertyName ) ;
66+
67+ if ( propertyChanged && validate )
6668 {
6769 ValidateProperty ( newValue , propertyName ) ;
6870 }
6971
70- return SetProperty ( ref field , newValue , propertyName ) ;
72+ return propertyChanged ;
7173 }
7274
7375 /// <summary>
@@ -85,12 +87,14 @@ protected bool SetProperty<T>(ref T field, T newValue, bool validate, [CallerMem
8587 /// <returns><see langword="true"/> if the property was changed, <see langword="false"/> otherwise.</returns>
8688 protected bool SetProperty < T > ( ref T field , T newValue , IEqualityComparer < T > comparer , bool validate , [ CallerMemberName ] string ? propertyName = null )
8789 {
88- if ( validate )
90+ bool propertyChanged = SetProperty ( ref field , newValue , comparer , propertyName ) ;
91+
92+ if ( propertyChanged && validate )
8993 {
9094 ValidateProperty ( newValue , propertyName ) ;
9195 }
9296
93- return SetProperty ( ref field , newValue , comparer , propertyName ) ;
97+ return propertyChanged ;
9498 }
9599
96100 /// <summary>
@@ -115,12 +119,14 @@ protected bool SetProperty<T>(ref T field, T newValue, IEqualityComparer<T> comp
115119 /// </remarks>
116120 protected bool SetProperty < T > ( T oldValue , T newValue , Action < T > callback , bool validate , [ CallerMemberName ] string ? propertyName = null )
117121 {
118- if ( validate )
122+ bool propertyChanged = SetProperty ( oldValue , newValue , callback , propertyName ) ;
123+
124+ if ( propertyChanged && validate )
119125 {
120126 ValidateProperty ( newValue , propertyName ) ;
121127 }
122128
123- return SetProperty ( oldValue , newValue , callback , propertyName ) ;
129+ return propertyChanged ;
124130 }
125131
126132 /// <summary>
@@ -139,12 +145,14 @@ protected bool SetProperty<T>(T oldValue, T newValue, Action<T> callback, bool v
139145 /// <returns><see langword="true"/> if the property was changed, <see langword="false"/> otherwise.</returns>
140146 protected bool SetProperty < T > ( T oldValue , T newValue , IEqualityComparer < T > comparer , Action < T > callback , bool validate , [ CallerMemberName ] string ? propertyName = null )
141147 {
142- if ( validate )
148+ bool propertyChanged = SetProperty ( oldValue , newValue , comparer , callback , propertyName ) ;
149+
150+ if ( propertyChanged && validate )
143151 {
144152 ValidateProperty ( newValue , propertyName ) ;
145153 }
146154
147- return SetProperty ( oldValue , newValue , comparer , callback , propertyName ) ;
155+ return propertyChanged ;
148156 }
149157
150158 /// <summary>
@@ -167,12 +175,14 @@ protected bool SetProperty<T>(T oldValue, T newValue, IEqualityComparer<T> compa
167175 protected bool SetProperty < TModel , T > ( T oldValue , T newValue , TModel model , Action < TModel , T > callback , bool validate , [ CallerMemberName ] string ? propertyName = null )
168176 where TModel : class
169177 {
170- if ( validate )
178+ bool propertyChanged = SetProperty ( oldValue , newValue , model , callback , propertyName ) ;
179+
180+ if ( propertyChanged && validate )
171181 {
172182 ValidateProperty ( newValue , propertyName ) ;
173183 }
174184
175- return SetProperty ( oldValue , newValue , model , callback , propertyName ) ;
185+ return propertyChanged ;
176186 }
177187
178188 /// <summary>
@@ -197,12 +207,14 @@ protected bool SetProperty<TModel, T>(T oldValue, T newValue, TModel model, Acti
197207 protected bool SetProperty < TModel , T > ( T oldValue , T newValue , IEqualityComparer < T > comparer , TModel model , Action < TModel , T > callback , bool validate , [ CallerMemberName ] string ? propertyName = null )
198208 where TModel : class
199209 {
200- if ( validate )
210+ bool propertyChanged = SetProperty ( oldValue , newValue , comparer , model , callback , propertyName ) ;
211+
212+ if ( propertyChanged && validate )
201213 {
202214 ValidateProperty ( newValue , propertyName ) ;
203215 }
204216
205- return SetProperty ( oldValue , newValue , comparer , model , callback , propertyName ) ;
217+ return propertyChanged ;
206218 }
207219
208220 /// <inheritdoc/>
0 commit comments