diff --git a/src/Avalonia.Controls/DataValidationErrors.cs b/src/Avalonia.Controls/DataValidationErrors.cs
index 243032e725..f11c621030 100644
--- a/src/Avalonia.Controls/DataValidationErrors.cs
+++ b/src/Avalonia.Controls/DataValidationErrors.cs
@@ -18,7 +18,6 @@ namespace Avalonia.Controls
[PseudoClasses(":error")]
public class DataValidationErrors : ContentControl
{
- private static bool s_overridingErrors;
///
/// Defines the DataValidationErrors.Errors attached property.
@@ -49,6 +48,12 @@ namespace Avalonia.Controls
///
private static readonly AttachedProperty?> OriginalErrorsProperty =
AvaloniaProperty.RegisterAttached?>("OriginalErrors");
+
+ ///
+ /// Prevents executing ErrorsChanged after they are updated internally from OnErrorsOrConverterChanged
+ ///
+ private static readonly AttachedProperty OverridingErrorsInternallyProperty =
+ AvaloniaProperty.RegisterAttached("OverridingErrorsInternally", defaultValue: false);
private Control? _owner;
@@ -96,9 +101,10 @@ namespace Avalonia.Controls
private static void ErrorsChanged(AvaloniaPropertyChangedEventArgs e)
{
- if (s_overridingErrors) return;
-
var control = (Control)e.Sender;
+
+ if (control.GetValue(OverridingErrorsInternallyProperty)) return;
+
var errors = (IEnumerable