Browse Source

Merge pull request #1933 from AvaloniaUI/fixes/1932-dropdown-selection

Fix SelectingItemsControl initialization order.
pull/1957/head
Steven Kirk 8 years ago
committed by GitHub
parent
commit
79e0c74d59
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/Avalonia.Controls/Primitives/SelectingItemsControl.cs
  2. 26
      tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs

4
src/Avalonia.Controls/Primitives/SelectingItemsControl.cs

@ -289,12 +289,12 @@ namespace Avalonia.Controls.Primitives
/// <inheritdoc/>
public override void EndInit()
{
base.EndInit();
if (--_updateCount == 0)
{
UpdateFinished();
}
base.EndInit();
}
/// <summary>

26
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<Item> Items { get; set; }
public Item SelectedItem { get; set; }
}
private class RootWithItems : TestRoot
{
public List<string> Items { get; set; } = new List<string>() { "a", "b", "c", "d", "e" };
public string Selected { get; set; } = "b";
}
}
}

Loading…
Cancel
Save