diff --git a/Microsoft.Toolkit.Mvvm/ComponentModel/ObservableObject.cs b/Microsoft.Toolkit.Mvvm/ComponentModel/ObservableObject.cs index a4b786cf..4c4b020d 100644 --- a/Microsoft.Toolkit.Mvvm/ComponentModel/ObservableObject.cs +++ b/Microsoft.Toolkit.Mvvm/ComponentModel/ObservableObject.cs @@ -136,7 +136,19 @@ namespace Microsoft.Toolkit.Mvvm.ComponentModel /// protected bool SetProperty(T oldValue, T newValue, Action callback, [CallerMemberName] string? propertyName = null) { - return SetProperty(oldValue, newValue, EqualityComparer.Default, callback, propertyName); + // We avoid calling the overload again to ensure the comparison is inlined + if (EqualityComparer.Default.Equals(oldValue, newValue)) + { + return false; + } + + OnPropertyChanging(propertyName); + + callback(newValue); + + OnPropertyChanged(propertyName); + + return true; } ///