コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
            }
        }