diff --git a/src/CommunityToolkit.Mvvm/ComponentModel/ObservableValidator.cs b/src/CommunityToolkit.Mvvm/ComponentModel/ObservableValidator.cs index 02921bf07..6c83c9125 100644 --- a/src/CommunityToolkit.Mvvm/ComponentModel/ObservableValidator.cs +++ b/src/CommunityToolkit.Mvvm/ComponentModel/ObservableValidator.cs @@ -123,6 +123,7 @@ protected ObservableValidator(ValidationContext validationContext) } /// + [Display(AutoGenerateField = false)] public bool HasErrors => this.totalErrors > 0; /// diff --git a/tests/CommunityToolkit.Mvvm.UnitTests/Test_ObservableValidator.cs b/tests/CommunityToolkit.Mvvm.UnitTests/Test_ObservableValidator.cs index af4b9f4be..7b09d1073 100644 --- a/tests/CommunityToolkit.Mvvm.UnitTests/Test_ObservableValidator.cs +++ b/tests/CommunityToolkit.Mvvm.UnitTests/Test_ObservableValidator.cs @@ -607,7 +607,20 @@ public void Test_ObservableValidator_ValidateAllProperties_IncludeInheritedPrope Assert.IsFalse(model.HasErrors); Assert.IsTrue(events.Count == 1); - Assert.IsTrue(events.Any(e => e.PropertyName == nameof(DerivedModelWithValidatableProperties.Name))); } + Assert.IsTrue(events.Any(e => e.PropertyName == nameof(DerivedModelWithValidatableProperties.Name))); + } + + // See https://github.com/CommunityToolkit/dotnet/issues/881 + [TestMethod] + public void Test_ObservableValidator_HasErrors_IncludeNonAutogenerateAttribute() + { + DerivedModelWithValidatableProperties model = new(); + + DisplayAttribute? displayAttribute = model.GetType().GetProperty(nameof(ObservableValidator.HasErrors))?.GetCustomAttribute(); + + Assert.IsNotNull(displayAttribute); + Assert.IsFalse(displayAttribute.AutoGenerateField); + } public class Person : ObservableValidator {