|
|
@@ -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<string> { "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<ListBox>((parent, scope) =>
|