private Control Template(ItemsControl control) { return new ItemsPresenter { Name = "itemsPresenter", [~ItemsPresenter.ItemsProperty] = control[~ItemsControl.ItemsProperty], [~ItemsPresenter.ItemsPanelProperty] = control[~ItemsControl.ItemsPanelProperty], }; }
/// <summary> /// The default template for an <see cref="ItemsControl"/> control. /// </summary> /// <param name="control">The control being styled.</param> /// <returns>The root of the instantiated template.</returns> public static Control Template(ItemsControl control) { return new ItemsPresenter { Name = "itemsPresenter", MemberSelector = control.MemberSelector, [~ItemsPresenter.ItemsProperty] = control[~ItemsControl.ItemsProperty], [~ItemsPresenter.ItemsPanelProperty] = control[~ItemsControl.ItemsPanelProperty], }; }
public void Adding_Control_Item_Should_Make_Control_Appear_In_LogicalChildren() { var target = new ItemsControl(); var child = new Control(); target.Template = this.GetTemplate(); target.Items = new[] { child }; target.ApplyTemplate(); Assert.Equal(new[] { child }, ((ILogical)target).LogicalChildren.ToList()); }
public void Adding_String_Item_Should_Make_TextBlock_Appear_In_LogicalChildren() { var target = new ItemsControl(); var child = new Control(); target.Template = this.GetTemplate(); target.Items = new[] { "Foo" }; target.ApplyTemplate(); var logical = (ILogical)target; Assert.Equal(1, logical.LogicalChildren.Count); Assert.IsType<TextBlock>(logical.LogicalChildren[0]); }
public void Changing_Items_Should_Fire_LogicalChildren_CollectionChanged() { var target = new ItemsControl(); var child = new Control(); var called = false; target.Template = this.GetTemplate(); target.Items = new[] { child }; target.ApplyTemplate(); ((ILogical)target).LogicalChildren.CollectionChanged += (s, e) => called = true; target.Items = new[] { "Foo" }; Assert.True(called); }
public void Adding_Items_Should_Fire_LogicalChildren_CollectionChanged() { var target = new ItemsControl(); var items = new PerspexList<string> { "Foo" }; var called = false; target.Template = this.GetTemplate(); target.Items = items; target.ApplyTemplate(); ((ILogical)target).LogicalChildren.CollectionChanged += (s, e) => called = e.Action == NotifyCollectionChangedAction.Add; items.Add("Bar"); Assert.True(called); }
public void Clearing_Control_Item_Should_Clear_Child_Controls_Parent() { var target = new ItemsControl(); var child = new Control(); target.Template = this.GetTemplate(); target.Items = new[] { child }; target.ApplyTemplate(); target.Items = null; Assert.Null(child.Parent); Assert.Null(((ILogical)child).LogicalParent); }
public void Setting_Items_To_Null_Should_Remove_LogicalChildren() { var target = new ItemsControl(); var child = new Control(); target.Template = this.GetTemplate(); target.Items = new[] { "Foo" }; target.ApplyTemplate(); target.Items = null; Assert.Equal(new ILogical[0], ((ILogical)target).LogicalChildren.ToList()); }
public void Setting_Items_To_Null_Should_Fire_LogicalChildren_CollectionChanged() { var target = new ItemsControl(); var child = new Control(); var called = false; target.Template = this.GetTemplate(); target.Items = new[] { child }; target.ApplyTemplate(); ((ILogical)target).LogicalChildren.CollectionChanged += (s, e) => called = e.Action == NotifyCollectionChangedAction.Remove; target.Items = null; Assert.True(called); }
public void Panel_Should_Have_TemplatedParent_Set_To_ItemsControl() { var target = new ItemsControl(); target.Template = this.GetTemplate(); target.Items = new[] { "Foo" }; target.ApplyTemplate(); var presenter = target.GetTemplateChildren().OfType<ItemsPresenter>().Single(); var panel = target.GetTemplateChildren().OfType<StackPanel>().Single(); Assert.Equal(target, panel.TemplatedParent); }
public void LogicalChildren_Should_Not_Change_Instance_When_Template_Changed() { var target = new ItemsControl() { Template = this.GetTemplate(), }; var before = ((ILogical)target).LogicalChildren; target.Template = null; target.Template = this.GetTemplate(); var after = ((ILogical)target).LogicalChildren; Assert.NotNull(before); Assert.NotNull(after); Assert.Same(before, after); }
public void Item_Should_Have_TemplatedParent_Set_To_Null() { var target = new ItemsControl(); target.Template = this.GetTemplate(); target.Items = new[] { "Foo" }; target.ApplyTemplate(); var presenter = target.GetTemplateChildren().OfType<ItemsPresenter>().Single(); var panel = target.GetTemplateChildren().OfType<StackPanel>().Single(); var item = (TextBlock)panel.GetVisualChildren().First(); Assert.Null(item.TemplatedParent); }
public void Empty_Class_Should_Initially_Be_Applied() { var target = new ItemsControl() { Template = this.GetTemplate(), }; Assert.True(target.Classes.Contains(":empty")); }
public void Empty_Class_Should_Be_Set_When_Empty_Collection_Set() { var target = new ItemsControl() { Template = this.GetTemplate(), Items = new[] { 1, 2, 3 }, }; target.Items = new int[0]; Assert.True(target.Classes.Contains(":empty")); }
public void Empty_Class_Should_Be_Cleared_When_Items_Added() { var target = new ItemsControl() { Template = this.GetTemplate(), Items = new[] { 1, 2, 3 }, }; Assert.False(target.Classes.Contains(":empty")); }
public void Control_Item_Should_Have_Parent_Set() { var target = new ItemsControl(); var child = new Control(); target.Template = this.GetTemplate(); target.Items = new[] { child }; target.ApplyTemplate(); Assert.Equal(target, child.Parent); Assert.Equal(target, ((ILogical)child).LogicalParent); }