diff --git a/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs b/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs
index d7db04f369..f8440aac47 100644
--- a/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs
+++ b/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs
@@ -289,12 +289,12 @@ namespace Avalonia.Controls.Primitives
///
public override void EndInit()
{
- base.EndInit();
-
if (--_updateCount == 0)
{
UpdateFinished();
}
+
+ base.EndInit();
}
///
diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs
index 14e1b15ebc..bbe1d85acb 100644
--- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs
+++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs
@@ -707,6 +707,26 @@ namespace Avalonia.Controls.UnitTests.Primitives
Assert.True(target.SelectedIndex == 1);
}
+ [Fact]
+ public void Binding_With_DelayedBinding_And_Initialization_Where_DataContext_Is_Root_Works()
+ {
+ // Test for #1932.
+ var root = new RootWithItems();
+
+ root.BeginInit();
+ root.DataContext = root;
+
+ var target = new ListBox();
+ target.BeginInit();
+ root.Child = target;
+
+ DelayedBinding.Add(target, ItemsControl.ItemsProperty, new Binding(nameof(RootWithItems.Items)));
+ DelayedBinding.Add(target, ListBox.SelectedItemProperty, new Binding(nameof(RootWithItems.Selected)));
+ target.EndInit();
+ root.EndInit();
+
+ Assert.Equal("b", target.SelectedItem);
+ }
private FuncControlTemplate Template()
{
@@ -745,5 +765,11 @@ namespace Avalonia.Controls.UnitTests.Primitives
public IList- Items { get; set; }
public Item SelectedItem { get; set; }
}
+
+ private class RootWithItems : TestRoot
+ {
+ public List Items { get; set; } = new List() { "a", "b", "c", "d", "e" };
+ public string Selected { get; set; } = "b";
+ }
}
}