public void Should_Not_Write_To_Old_DataContext() { var vm = new OldDataContextViewModel(); var target = new TestSelector(); var itemsBinding = new Binding { Path = "Items", Mode = BindingMode.OneWay, }; var selectedItemsBinding = new Binding { Path = "SelectedItems", Mode = BindingMode.OneWay, }; // Bind Items and SelectedItems to the VM. target.Bind(TestSelector.ItemsProperty, itemsBinding); target.Bind(TestSelector.SelectedItemsProperty, selectedItemsBinding); // Set DataContext and SelectedIndex target.DataContext = vm; target.SelectedIndex = 1; // Make sure SelectedItems are written back to VM. Assert.Equal(new[] { "bar" }, vm.SelectedItems); // Clear DataContext and ensure that SelectedItems is still set in the VM. target.DataContext = null; Assert.Equal(new[] { "bar" }, vm.SelectedItems); // Ensure target's SelectedItems is now clear. Assert.Empty(target.SelectedItems); }
public void Unbound_SelectedItems_Should_Be_Cleared_When_DataContext_Cleared() { var data = new { Items = new[] { "foo", "bar", "baz" }, }; var target = new TestSelector { DataContext = data, Template = Template(), }; var itemsBinding = new Binding { Path = "Items" }; target.Bind(TestSelector.ItemsProperty, itemsBinding); Assert.Same(data.Items, target.Items); target.SelectedItems.Add("bar"); target.DataContext = null; Assert.Empty(target.SelectedItems); }