diff --git a/src/Avalonia.Base/AvaloniaObject.cs b/src/Avalonia.Base/AvaloniaObject.cs index 3cd597c9eb..78d87daea8 100644 --- a/src/Avalonia.Base/AvaloniaObject.cs +++ b/src/Avalonia.Base/AvaloniaObject.cs @@ -658,7 +658,6 @@ namespace Avalonia /// The value. private void SetDirectValue(AvaloniaProperty property, object value) { - var metadata = (IDirectPropertyMetadata)property.GetMetadata(GetType()); var notification = value as BindingNotification; if (notification != null) @@ -682,6 +681,7 @@ namespace Avalonia if (notification == null || notification.HasValue) { + var metadata = (IDirectPropertyMetadata)property.GetMetadata(GetType()); var accessor = (IDirectPropertyAccessor)GetRegistered(property); var finalValue = value == AvaloniaProperty.UnsetValue ? metadata.UnsetValue : value; @@ -691,7 +691,7 @@ namespace Avalonia accessor.SetValue(this, finalValue); } - if (metadata.EnableDataValidation && notification != null) + if (notification != null) { UpdateDataValidation(property, notification); } diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs index a43b11ed3a..2d89019f93 100644 --- a/src/Avalonia.Controls/TextBox.cs +++ b/src/Avalonia.Controls/TextBox.cs @@ -464,7 +464,10 @@ namespace Avalonia.Controls protected override void UpdateDataValidation(AvaloniaProperty property, BindingNotification status) { - ((IPseudoClasses)Classes).Set(":error", status.ErrorType != BindingErrorType.None); + if (property == TextProperty) + { + ((IPseudoClasses)Classes).Set(":error", status.ErrorType != BindingErrorType.None); + } } private int CoerceCaretIndex(int value) diff --git a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_DataValidation.cs b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_DataValidation.cs index a74b972b90..c8436c376f 100644 --- a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_DataValidation.cs +++ b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_DataValidation.cs @@ -14,10 +14,7 @@ namespace Avalonia.Base.UnitTests { var target = new Class1(); - target.SetValue(Class1.NonValidatedProperty, new BindingNotification(6)); - target.SetValue(Class1.NonValidatedProperty, new BindingNotification(new Exception(), BindingErrorType.Error)); - target.SetValue(Class1.NonValidatedProperty, new BindingNotification(new Exception(), BindingErrorType.DataValidationError)); - target.SetValue(Class1.NonValidatedProperty, new BindingNotification(7)); + target.SetValue(Class1.NonValidatedDirectProperty, 6); Assert.Empty(target.Notifications); } @@ -27,10 +24,7 @@ namespace Avalonia.Base.UnitTests { var target = new Class1(); - target.SetValue(Class1.NonValidatedDirectProperty, new BindingNotification(6)); - target.SetValue(Class1.NonValidatedDirectProperty, new BindingNotification(new Exception(), BindingErrorType.Error)); - target.SetValue(Class1.NonValidatedDirectProperty, new BindingNotification(new Exception(), BindingErrorType.DataValidationError)); - target.SetValue(Class1.NonValidatedDirectProperty, new BindingNotification(7)); + target.SetValue(Class1.NonValidatedDirectProperty, 6); Assert.Empty(target.Notifications); }