diff --git a/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs b/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs index 152b551f9a..7b91d6235d 100644 --- a/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs +++ b/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs @@ -54,7 +54,8 @@ namespace Avalonia.Controls.Primitives nameof(SelectedIndex), o => o.SelectedIndex, (o, v) => o.SelectedIndex = v, - unsetValue: -1); + unsetValue: -1, + defaultBindingMode: BindingMode.TwoWay); /// /// Defines the property. diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs index 3b5aa53d56..8e421bf0a2 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs @@ -749,6 +749,40 @@ namespace Avalonia.Controls.UnitTests.Primitives Assert.Equal("b", target.SelectedItem); } + [Fact] + public void Mode_For_SelectedIndex_Is_TwoWay_By_Default() + { + var items = new[] + { + new Item(), + new Item(), + new Item(), + }; + + var vm = new MasterViewModel + { + Child = new ChildViewModel + { + Items = items, + SelectedIndex = 1, + } + }; + + var target = new SelectingItemsControl { DataContext = vm }; + var itemsBinding = new Binding("Child.Items"); + var selectedIndBinding = new Binding("Child.SelectedIndex"); + + target.Bind(SelectingItemsControl.ItemsProperty, itemsBinding); + target.Bind(SelectingItemsControl.SelectedIndexProperty, selectedIndBinding); + + Assert.Equal(1, target.SelectedIndex); + + target.SelectedIndex = 2; + + Assert.Equal(2, target.SelectedIndex); + Assert.Equal(2, vm.Child.SelectedIndex); + } + private FuncControlTemplate Template() { return new FuncControlTemplate(control => @@ -785,6 +819,7 @@ namespace Avalonia.Controls.UnitTests.Primitives { public IList Items { get; set; } public Item SelectedItem { get; set; } + public int SelectedIndex { get; set; } } private class RootWithItems : TestRoot