Skip to content

Commit bab6d9a

Browse files
committed
Minor tweaks to ObservableValidator
1 parent 07f1a27 commit bab6d9a

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

Microsoft.Toolkit.Mvvm/ComponentModel/ObservableValidator.cs

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)