public void Removing_Selected_Item_Should_Clear_Selection() { var items = new AvaloniaList <Item> { new Item(), new Item(), }; var target = new SelectingItemsControl { Items = items, Template = Template(), }; target.ApplyTemplate(); target.SelectedIndex = 1; Assert.Equal(items[1], target.SelectedItem); Assert.Equal(1, target.SelectedIndex); items.RemoveAt(1); Assert.Null(target.SelectedItem); Assert.Equal(-1, target.SelectedIndex); }
public void Should_Handle_Null_Items() { var items = new AvaloniaList <string>(new[] { "foo", null, "bar" }); var target = new ItemsPresenter { Items = items, }; target.ApplyTemplate(); var text = target.Panel.Children.Cast <ContentPresenter>().Select(x => x.Content).ToList(); Assert.Equal(new[] { "foo", null, "bar" }, text); Assert.NotNull(target.ItemContainerGenerator.ContainerFromIndex(0)); Assert.NotNull(target.ItemContainerGenerator.ContainerFromIndex(1)); Assert.NotNull(target.ItemContainerGenerator.ContainerFromIndex(2)); items.RemoveAt(1); text = target.Panel.Children.Cast <ContentPresenter>().Select(x => x.Content).ToList(); Assert.Equal(new[] { "foo", "bar" }, text); Assert.NotNull(target.ItemContainerGenerator.ContainerFromIndex(0)); Assert.NotNull(target.ItemContainerGenerator.ContainerFromIndex(1)); }
protected override void Initialize(AvaloniaList <TreeNode> nodes) { _subscription = _control.VisualChildren.ForEachItem( (i, item) => nodes.Insert(i, new VisualTreeNode(item, Owner)), (i, item) => nodes.RemoveAt(i), () => nodes.Clear()); }
public void Removing_Selected_Item_Should_Clear_Selection() { var items = new AvaloniaList <Item> { new Item(), new Item(), }; var target = new SelectingItemsControl { Items = items, Template = Template(), }; target.ApplyTemplate(); target.SelectedIndex = 1; Assert.Equal(items[1], target.SelectedItem); Assert.Equal(1, target.SelectedIndex); SelectionChangedEventArgs receivedArgs = null; target.SelectionChanged += (_, args) => receivedArgs = args; var removed = items[1]; items.RemoveAt(1); Assert.Null(target.SelectedItem); Assert.Equal(-1, target.SelectedIndex); Assert.NotNull(receivedArgs); Assert.Empty(receivedArgs.AddedItems); Assert.Equal(new[] { removed }, receivedArgs.RemovedItems); }
public void Selection_Should_Be_Cleared_When_No_Items_Left() { var items = new AvaloniaList<string>(new[] { "foo", "bar" }); var target = new TestSelector { Items = items, Template = Template(), }; target.ApplyTemplate(); target.SelectedIndex = 1; items.RemoveAt(1); items.RemoveAt(0); Assert.Equal(-1, target.SelectedIndex); Assert.Null(target.SelectedItem); }
public void Selection_Should_Be_Cleared_When_No_Items_Left() { var items = new AvaloniaList <string>(new[] { "foo", "bar" }); var target = new TestSelector { Items = items, Template = Template(), }; target.ApplyTemplate(); target.SelectedIndex = 1; items.RemoveAt(1); items.RemoveAt(0); Assert.Equal(-1, target.SelectedIndex); Assert.Null(target.SelectedItem); }
public void Control_Item_Should_Be_Removed_From_Logical_Children_Before_ApplyTemplate() { var target = new ItemsControl(); var child = new Control(); var items = new AvaloniaList <Control>(child); target.Template = GetTemplate(); target.Items = items; items.RemoveAt(0); Assert.Null(child.Parent); Assert.Null(child.GetLogicalParent()); Assert.Empty(target.GetLogicalChildren()); }
public void Should_Remove_Containers() { var items = new AvaloniaList <string>(new[] { "foo", "bar" }); var target = new ItemsPresenter { Items = items, }; target.ApplyTemplate(); items.RemoveAt(0); Assert.Equal(1, target.Panel.Children.Count); Assert.Equal("bar", ((ContentPresenter)target.Panel.Children[0]).Content); Assert.Equal("bar", ((ContentPresenter)target.ItemContainerGenerator.ContainerFromIndex(0)).Content); }
public void Should_Handle_Duplicate_Items() { var items = new AvaloniaList <int>(new[] { 1, 2, 1 }); var target = new ItemsPresenter { Items = items, }; target.ApplyTemplate(); items.RemoveAt(2); var text = target.Panel.Children.OfType <TextBlock>().Select(x => x.Text); Assert.Equal(new[] { "1", "2" }, text); }
public void Removing_Selected_First_Item_Should_Select_Next_Item() { var items = new AvaloniaList <string>(new[] { "foo", "bar" }); var target = new TestSelector { Items = items, Template = Template(), }; target.ApplyTemplate(); target.Presenter.ApplyTemplate(); items.RemoveAt(0); Assert.Equal(0, target.SelectedIndex); Assert.Equal("bar", target.SelectedItem); Assert.Equal(new[] { ":selected" }, target.Presenter.Panel.Children[0].Classes); }
public void Item_Should_Be_Selected_When_Selection_Removed() { var items = new AvaloniaList <string>(new[] { "foo", "bar", "baz", "qux" }); var target = new TestSelector { Items = items, Template = Template(), }; target.ApplyTemplate(); target.SelectedIndex = 2; items.RemoveAt(2); Assert.Equal(2, target.SelectedIndex); Assert.Equal("qux", target.SelectedItem); }
public void Item_Should_Be_Selected_When_Selection_Removed() { var items = new AvaloniaList<string>(new[] { "foo", "bar", "baz", "qux" }); var target = new TestSelector { Items = items, Template = Template(), }; target.ApplyTemplate(); target.SelectedIndex = 2; items.RemoveAt(2); Assert.Equal(2, target.SelectedIndex); Assert.Equal("qux", target.SelectedItem); }
public void Should_Handle_Duplicate_Items() { var items = new AvaloniaList <int>(new[] { 1, 2, 1 }); var target = new ItemsPresenter { Items = items, }; target.ApplyTemplate(); items.RemoveAt(2); var numbers = target.Panel.Children .OfType <ContentPresenter>() .Select(x => x.Content) .Cast <int>(); Assert.Equal(new[] { 1, 2 }, numbers); }
public void Removing_Selected_Item_Should_Clear_Selection_With_BeginInit() { var items = new AvaloniaList <Item> { new Item(), new Item(), }; var target = new SelectingItemsControl(); target.BeginInit(); target.Items = items; target.Template = Template(); target.EndInit(); target.ApplyTemplate(); target.Presenter.ApplyTemplate(); target.SelectedIndex = 0; Assert.Equal(items[0], target.SelectedItem); Assert.Equal(0, target.SelectedIndex); SelectionChangedEventArgs receivedArgs = null; target.SelectionChanged += (_, args) => receivedArgs = args; var removed = items[0]; items.RemoveAt(0); Assert.Null(target.SelectedItem); Assert.Equal(-1, target.SelectedIndex); Assert.NotNull(receivedArgs); Assert.Empty(receivedArgs.AddedItems); Assert.Equal(new[] { removed }, receivedArgs.RemovedItems); Assert.False(items.Single().IsSelected); }
public void Removing_Selected_Item_Should_Clear_Selection() { var items = new AvaloniaList<Item> { new Item(), new Item(), }; var target = new SelectingItemsControl { Items = items, Template = Template(), }; target.ApplyTemplate(); target.SelectedIndex = 1; Assert.Equal(items[1], target.SelectedItem); Assert.Equal(1, target.SelectedIndex); items.RemoveAt(1); Assert.Equal(null, target.SelectedItem); Assert.Equal(-1, target.SelectedIndex); }
public void Should_Remove_Containers() { var items = new AvaloniaList<string>(new[] { "foo", "bar" }); var target = new ItemsPresenter { Items = items, }; target.ApplyTemplate(); items.RemoveAt(0); Assert.Equal(1, target.Panel.Children.Count); Assert.Equal("bar", ((ContentPresenter)target.Panel.Children[0]).Content); Assert.Equal("bar", ((ContentPresenter)target.ItemContainerGenerator.ContainerFromIndex(0)).Content); }
public void Should_Handle_Duplicate_Items() { var items = new AvaloniaList<int>(new[] { 1, 2, 1 }); var target = new ItemsPresenter { Items = items, }; target.ApplyTemplate(); items.RemoveAt(2); var numbers = target.Panel.Children .OfType<ContentPresenter>() .Select(x => x.Content) .Cast<int>(); Assert.Equal(new[] { 1, 2 }, numbers); }
public void Should_Handle_Null_Items() { var items = new AvaloniaList<string>(new[] { "foo", null, "bar" }); var target = new ItemsPresenter { Items = items, }; target.ApplyTemplate(); var text = target.Panel.Children.Cast<ContentPresenter>().Select(x => x.Content).ToList(); Assert.Equal(new[] { "foo", null, "bar" }, text); Assert.NotNull(target.ItemContainerGenerator.ContainerFromIndex(0)); Assert.NotNull(target.ItemContainerGenerator.ContainerFromIndex(1)); Assert.NotNull(target.ItemContainerGenerator.ContainerFromIndex(2)); items.RemoveAt(1); text = target.Panel.Children.Cast<ContentPresenter>().Select(x => x.Content).ToList(); Assert.Equal(new[] { "foo", "bar" }, text); Assert.NotNull(target.ItemContainerGenerator.ContainerFromIndex(0)); Assert.NotNull(target.ItemContainerGenerator.ContainerFromIndex(1)); }
public void Control_Item_Should_Be_Removed_From_Logical_Children_Before_ApplyTemplate() { var target = new ItemsControl(); var child = new Control(); var items = new AvaloniaList<Control>(child); target.Template = GetTemplate(); target.Items = items; items.RemoveAt(0); Assert.Null(child.Parent); Assert.Null(child.GetLogicalParent()); Assert.Empty(target.GetLogicalChildren()); }