diff --git a/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs b/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs index 963bba7c83..7c57e22933 100644 --- a/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs @@ -1,3 +1,4 @@ +using System.Collections.ObjectModel; using System.Linq; using System.Reactive.Subjects; using Avalonia.Collections; @@ -457,6 +458,33 @@ namespace Avalonia.Controls.UnitTests } } + [Fact] + public void Initial_Binding_Of_SelectedItems_Should_Not_Cause_Write_To_SelectedItems() + { + var target = new ListBox + { + [!ListBox.ItemsProperty] = new Binding("Items"), + [!ListBox.SelectedItemsProperty] = new Binding("SelectedItems"), + }; + + var viewModel = new + { + Items = new[] { "Foo", "Bar", "Baz " }, + SelectedItems = new ObservableCollection { "Bar" }, + }; + + var raised = 0; + + viewModel.SelectedItems.CollectionChanged += (s, e) => ++raised; + + target.DataContext = viewModel; + + Assert.Equal(0, raised); + Assert.Equal(new[] { "Bar" }, viewModel.SelectedItems); + Assert.Equal(new[] { "Bar" }, target.SelectedItems); + Assert.Equal(new[] { "Bar" }, target.Selection.SelectedItems); + } + private FuncControlTemplate ListBoxTemplate() { return new FuncControlTemplate((parent, scope) =>