public void ApplyTemplate_Should_Create_Visual_Children() { var target = new TemplatedControl { Template = new FuncControlTemplate((_, __) => new Decorator { Child = new Panel { Children = { new TextBlock(), new Border(), } } }), }; target.ApplyTemplate(); var types = target.GetVisualDescendants().Select(x => x.GetType()).ToList(); Assert.Equal( new[] { typeof(Decorator), typeof(Panel), typeof(TextBlock), typeof(Border) }, types); Assert.Empty(target.GetLogicalChildren()); }
public void Changing_Template_Should_Clear_Old_Templated_Childs_Parent() { var target = new TemplatedControl { Template = new FuncControlTemplate((_, __) => new Decorator()) }; target.ApplyTemplate(); var child = (Decorator)target.GetVisualChildren().Single(); target.Template = new FuncControlTemplate((_, __) => new Canvas()); target.ApplyTemplate(); Assert.Null(child.Parent); }
public void Templated_Children_Should_Have_TemplatedParent_Set() { var target = new TemplatedControl { Template = new FuncControlTemplate(_ => new Decorator { Child = new Panel { Children = new Controls { new TextBlock(), new Border(), } } }), }; target.ApplyTemplate(); var templatedParents = target.GetVisualDescendents() .OfType <IControl>() .Select(x => x.TemplatedParent) .ToList(); Assert.Equal(4, templatedParents.Count); Assert.True(templatedParents.All(x => x == target)); }
public void Nested_Templated_Control_Should_Not_Have_Template_Applied() { var target = new TemplatedControl { Template = new FuncControlTemplate(_ => new ScrollViewer()) }; target.ApplyTemplate(); var child = (ScrollViewer)target.GetVisualChildren().Single(); Assert.Empty(child.GetVisualChildren()); }
public void Templated_Child_Should_Have_Parent_Set() { var target = new TemplatedControl { Template = new FuncControlTemplate(_ => new Decorator()) }; target.ApplyTemplate(); var child = (Decorator)target.GetVisualChildren().Single(); Assert.Equal(target, child.Parent); Assert.Equal(target, child.GetLogicalParent()); }
public void Templated_Child_Should_Have_ApplyTemplate_Called_With_Logical_Then_Visual_Parent() { var target = new TemplatedControl { Template = new FuncControlTemplate(_ => new ApplyTemplateTracker()) }; target.ApplyTemplate(); var child = (ApplyTemplateTracker)target.GetVisualChildren().Single(); Assert.Equal( new[] { new Tuple <IVisual, ILogical>(null, target), new Tuple <IVisual, ILogical>(target, target), }, child.Invocations); }
public void Templated_Child_Should_Be_NameScope() { var target = new TemplatedControl { Template = new FuncControlTemplate(_ => new Decorator { Child = new Panel { Children = new Controls { new TextBlock(), new Border(), } } }), }; target.ApplyTemplate(); Assert.NotNull(NameScope.GetNameScope((Control)target.GetVisualChildren().Single())); }
public void TemplatedControl () { TemplatedControl c = new TemplatedControl { Name = "Custom" }; c.ApplyTemplate (); Rectangle Bob = new Rectangle { Name = "Bob" }; Storyboard resourceSB = c.Resources ["ResourceSB"] as Storyboard; Storyboard templateSb = (Storyboard) c.GetTemplateChild ("TemplateSB"); Grid grid = c.TemplateGrid; Rectangle rect = (Rectangle) grid.FindName ("Rect"); Rectangle fakeGrid = new Rectangle { Name = "Grid" }; c.TemplateGrid.Children.Add (Bob); testArea.Children.Add (c); Assert.IsNull (testArea.FindName ("LayoutRoot"), "LayoutRoot.FindName (\"LayoutRoot\")"); Assert.IsTrue (testArea.FindName ("Custom") == c, "LayoutRoot.FindName (\"Custom\")"); Assert.IsNull (testArea.FindName ("Grid"), "LayoutRoot.FindName (\"Grid\")"); Assert.IsNull (testArea.FindName ("Bob"), "LayoutRoot.FindName (\"Bob\")"); Assert.IsNull (testArea.FindName ("Rect"), "LayoutRoot.FindName (\"Rect\")"); Assert.IsNull (c.FindName ("LayoutRoot"), "c.FindName (\"LayoutRoot\")"); Assert.IsTrue (c.FindName ("Custom") == c, "c.FindName (\"Custom\")"); Assert.IsNull (c.FindName ("Grid"), "c.FindName (\"Grid\")"); Assert.IsTrue (c.FindName ("Bob") == Bob, "c.FindName (\"Bob\")"); Assert.IsNull (c.FindName ("Rect"), "c.FindName (\"Rect\")"); Assert.IsNull (grid.FindName ("LayoutRoot"), "grid.FindName (\"LayoutRoot\")"); Assert.IsNull (grid.FindName ("Custom"), "grid.FindName (\"Custom\")"); Assert.IsTrue (grid.FindName ("Grid") == grid, "grid.FindName (\"Grid\")"); Assert.IsNull (grid.FindName ("Bob"), "grid.FindName (\"Bob\")"); Assert.IsTrue (grid.FindName ("Rect") == rect, "grid.FindName (\"Rect\")"); Assert.IsNull (Bob.FindName ("LayoutRoot"), "Bob.FindName (\"LayoutRoot\")"); Assert.IsTrue (Bob.FindName ("Custom") == c, "Bob.FindName (\"Custom\")"); Assert.IsNull (Bob.FindName ("Grid"), "Bob.FindName (\"Grid\")"); Assert.IsTrue (Bob.FindName ("Bob") == Bob, "Bob.FindName (\"Bob\")"); Assert.IsNull (Bob.FindName ("Rect"), "Bob.FindName (\"Rect\")"); Assert.IsNull (rect.FindName ("LayoutRoot"), "rect.FindName (\"LayoutRoot\")"); Assert.IsNull (rect.FindName ("Custom"), "rect.FindName (\"Custom\")"); Assert.IsTrue (rect.FindName ("Grid") == c.TemplateGrid, "rect.FindName (\"Grid\")"); Assert.IsNull (rect.FindName ("Bob"), "rect.FindName (\"Bob\")"); Assert.IsTrue (rect.FindName ("Rect") == rect, "rect.FindName (\"Rect\")"); }