public void ApplyTemplate_Should_Create_Visual_Child() { var target = new TemplatedControl { Template = new FuncControlTemplate(_ => new Decorator { Child = new Panel { Children = new Controls { new TextBlock(), new Border(), } } }), }; target.ApplyTemplate(); var types = target.GetVisualDescendents().Select(x => x.GetType()).ToList(); Assert.Equal( new[] { typeof(Decorator), typeof(Panel), typeof(TextBlock), typeof(Border) }, types); Assert.Empty(target.GetLogicalChildren()); }
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 Template_Doesnt_Get_Executed_On_Set() { bool executed = false; var template = new FuncControlTemplate(_ => { executed = true; return new Control(); }); var target = new TemplatedControl { Template = template, }; Assert.False(executed); }
public void Template_Result_Becomes_Visual_Child() { Control templateResult = new Control(); var template = new FuncControlTemplate(_ => { return templateResult; }); var target = new TemplatedControl { Template = template, }; target.Measure(new Size(100, 100)); var children = target.GetVisualChildren().ToList(); Assert.Equal(new[] { templateResult }, children); }
public void Template_Gets_Executed_On_Measure() { bool executed = false; var template = new FuncControlTemplate(_ => { executed = true; return new Control(); }); var target = new TemplatedControl { Template = template, }; target.Measure(new Size(100, 100)); Assert.True(executed); }
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((Visual)target.GetVisualChildren().Single())); }
public void TemplatedParent_Is_Set_On_Generated_Template() { Control templateResult = new Control(); var template = new ControlTemplate(_ => { return templateResult; }); var target = new TemplatedControl { Template = template, }; target.Measure(new Size(100, 100)); Assert.Equal(target, templateResult.TemplatedParent); }
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_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 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()); }