diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs index 1003fef85f..dbea94f9a4 100644 --- a/src/Avalonia.Controls/TextBox.cs +++ b/src/Avalonia.Controls/TextBox.cs @@ -486,26 +486,28 @@ namespace Avalonia.Controls if (property == TextProperty) { var classes = (IPseudoClasses)Classes; - - if (status.ErrorType == BindingErrorType.None) - { - classes.Remove(":error"); - DataValidationErrors = null; - } - else - { - classes.Add(":error"); - DataValidationErrors = UnpackException(status.Error); - } + DataValidationErrors = UnpackException(status.Error); + classes.Set(":error", DataValidationErrors != null); } } private static IEnumerable UnpackException(Exception exception) { - var aggregate = exception as AggregateException; - return aggregate == null ? - (IEnumerable)new[] { exception } : - aggregate.InnerExceptions; + if (exception != null) + { + var aggregate = exception as AggregateException; + var exceptions = aggregate == null ? + (IEnumerable)new[] { exception } : + aggregate.InnerExceptions; + var filtered = exceptions.Where(x => !(x is BindingBrokenException)).ToList(); + + if (filtered.Count > 0) + { + return filtered; + } + } + + return null; } private int CoerceCaretIndex(int value)