diff --git a/src/Avalonia.Base/PriorityBindingEntry.cs b/src/Avalonia.Base/PriorityBindingEntry.cs
index 570bfe03dc..d4a47306a7 100644
--- a/src/Avalonia.Base/PriorityBindingEntry.cs
+++ b/src/Avalonia.Base/PriorityBindingEntry.cs
@@ -50,6 +50,11 @@ namespace Avalonia
get;
}
+ ///
+ /// Gets a value indicating whether the binding has completed.
+ ///
+ public bool HasCompleted { get; private set; }
+
///
/// The current value of the binding.
///
@@ -129,6 +134,8 @@ namespace Avalonia
private void Completed()
{
+ HasCompleted = true;
+
if (Dispatcher.UIThread.CheckAccess())
{
_owner.Completed(this);
diff --git a/src/Avalonia.Base/PriorityLevel.cs b/src/Avalonia.Base/PriorityLevel.cs
index 96661bd7ea..909558b0ce 100644
--- a/src/Avalonia.Base/PriorityLevel.cs
+++ b/src/Avalonia.Base/PriorityLevel.cs
@@ -112,12 +112,16 @@ namespace Avalonia
return Disposable.Create(() =>
{
- Bindings.Remove(node);
- entry.Dispose();
-
- if (entry.Index >= ActiveBindingIndex)
+ if (!entry.HasCompleted)
{
- ActivateFirstBinding();
+ Bindings.Remove(node);
+
+ entry.Dispose();
+
+ if (entry.Index >= ActiveBindingIndex)
+ {
+ ActivateFirstBinding();
+ }
}
});
}