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); }
public void Changing_DataContext_Should_Not_Clear_Nested_ViewModel_SelectedItem() { var items = new[] { new Item(), new Item(), }; var vm = new MasterViewModel { Child = new ChildViewModel { Items = items, SelectedItem = items[1], } }; var target = new SelectingItemsControl { DataContext = vm }; var itemsBinding = new Binding("Child.Items"); var selectedBinding = new Binding("Child.SelectedItem"); target.Bind(SelectingItemsControl.ItemsProperty, itemsBinding); target.Bind(SelectingItemsControl.SelectedItemProperty, selectedBinding); Assert.Equal(1, target.SelectedIndex); Assert.Same(vm.Child.SelectedItem, target.SelectedItem); items = new[] { new Item { Value = "Item1" }, new Item { Value = "Item2" }, new Item { Value = "Item3" }, }; vm = new MasterViewModel { Child = new ChildViewModel { Items = items, SelectedItem = items[2], } }; target.DataContext = vm; Assert.Equal(2, target.SelectedIndex); Assert.Same(vm.Child.SelectedItem, target.SelectedItem); }