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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
28 additions and
2 deletions
-
src/Avalonia.Controls/Primitives/SelectingItemsControl.cs
-
tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs
|
|
|
@ -289,12 +289,12 @@ namespace Avalonia.Controls.Primitives |
|
|
|
/// <inheritdoc/>
|
|
|
|
public override void EndInit() |
|
|
|
{ |
|
|
|
base.EndInit(); |
|
|
|
|
|
|
|
if (--_updateCount == 0) |
|
|
|
{ |
|
|
|
UpdateFinished(); |
|
|
|
} |
|
|
|
|
|
|
|
base.EndInit(); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
@ -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"; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|