public void Raises_Selection_Changed_On_Items_Reset() { var items = new ResettingCollection(new[] { "foo", "bar", "baz" }); var target = CreateTarget(source: items); target.SelectedIndex = 1; var changed = new List <string>(); target.PropertyChanged += (s, e) => changed.Add(e.PropertyName); var oldSelectedIndex = target.SelectedIndex; var oldSelectedItem = target.SelectedItem; items.Reset(new string[0]); Assert.NotEqual(oldSelectedIndex, target.SelectedIndex); Assert.NotEqual(oldSelectedItem, target.SelectedItem); Assert.Equal(-1, target.SelectedIndex); Assert.Equal(null, target.SelectedItem); Assert.Empty(target.WritableSelectedItems); Assert.Contains(nameof(target.SelectedIndex), changed); Assert.Contains(nameof(target.SelectedItem), changed); }
public void Restores_Selection_On_Items_Reset() { var items = new ResettingCollection(new[] { "foo", "bar", "baz" }); var target = CreateTarget(source: items); target.SelectedIndex = 1; items.Reset(new[] { "baz", "foo", "bar" }); Assert.Equal(2, target.SelectedIndex); }
public void Restores_Selection_On_Items_Reset() { var items = new ResettingCollection(new[] { "foo", "bar", "baz" }); var model = new SelectionModel <string> { Source = items }; var target = new SelectedItemsSync(model); model.SelectedIndex = 1; items.Reset(new[] { "baz", "foo", "bar" }); Assert.Equal(2, model.SelectedIndex); }
public void Preserves_SelectedItem_On_Items_Reset() { var items = new ResettingCollection(new[] { "foo", "bar", "baz" }); var target = CreateTarget(source: items); target.SelectedItem = "foo"; Assert.Equal(0, target.SelectedIndex); items.Reset(new string[] { "baz", "foo", "bar" }); Assert.Equal("foo", target.SelectedItem); Assert.Equal(1, target.SelectedIndex); }
public void AutoScrollToSelectedItem_On_Reset_Works() { // Issue #3148 using (UnitTestApplication.Start(TestServices.StyledWindow)) { var items = new ResettingCollection(100); var target = new ListBox { Items = items, ItemTemplate = new FuncDataTemplate <string>((x, _) => new TextBlock { Text = x, Width = 100, Height = 10 }), AutoScrollToSelectedItem = true, VirtualizationMode = ItemVirtualizationMode.Simple, }; var root = new TestRoot(true, target); root.Measure(new Size(100, 100)); root.Arrange(new Rect(0, 0, 100, 100)); Assert.True(target.Presenter.Panel.Children.Count > 0); Assert.True(target.Presenter.Panel.Children.Count < 100); target.SelectedItem = "Item99"; // #3148 triggered here. items.Reset(new[] { "Item99" }); Assert.Equal(0, target.SelectedIndex); Assert.Equal(1, target.Presenter.Panel.Children.Count); } }