public void GetTemplateChildren_Should_Not_Return_Nested_Template_Controls() { var target = new TestTemplatedControl(); var border1 = new Border { Name = "border1", TemplatedParent = target }; var inner = new TestTemplatedControl { Name = "inner", TemplatedParent = target }; var border2 = new Border { Name = "border2", TemplatedParent = inner }; var border3 = new Border { Name = "border3", TemplatedParent = inner }; var border4 = new Border { Name = "border4", TemplatedParent = target }; var border5 = new Border { Name = "border5", TemplatedParent = null }; target.AddVisualChild(border1); border1.Child = inner; inner.AddVisualChild(border2); inner.AddVisualChild(border3); border3.Child = border4; border4.Child = border5; var result = target.GetTemplateChildren().Select(x => x.Name).ToArray(); Assert.Equal(new[] { "border1", "inner", "border4" }, result); }