From 792d9f1a0589fff578948345bfdb0197b5767d48 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 5 Jan 2019 17:46:29 +0100 Subject: [PATCH] Added failing test for #2191. Check that when content is created via `DataTemplate`, it is correctly added as a logical child. --- .../TabControlTests.cs | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/tests/Avalonia.Controls.UnitTests/TabControlTests.cs b/tests/Avalonia.Controls.UnitTests/TabControlTests.cs index a5c3881d37..ddc573c74b 100644 --- a/tests/Avalonia.Controls.UnitTests/TabControlTests.cs +++ b/tests/Avalonia.Controls.UnitTests/TabControlTests.cs @@ -267,26 +267,46 @@ namespace Avalonia.Controls.UnitTests Assert.Null(page.Content); } + [Fact] + public void DataTemplate_Created_Content_Should_Be_Logical_Child_After_ApplyTemplate() + { + TabControl target = new TabControl + { + Template = TabControlTemplate(), + ContentTemplate = new FuncDataTemplate(x => + new TextBlock { Tag = "bar", Text = x }), + Items = new[] { "Foo" }, + }; + + ApplyTemplate(target); + target.ContentPart.UpdateChild(); + + var content = Assert.IsType(target.ContentPart.Child); + Assert.Equal("bar", content.Tag); + Assert.Same(target, content.GetLogicalParent()); + Assert.Single(target.GetLogicalChildren(), content); + } + private IControlTemplate TabControlTemplate() { return new FuncControlTemplate(parent => - new StackPanel { - Children = { - new ItemsPresenter - { - Name = "PART_ItemsPresenter", - [!TabStrip.ItemsProperty] = parent[!TabControl.ItemsProperty], - [!TabStrip.ItemTemplateProperty] = parent[!TabControl.ItemTemplateProperty], - }, - new ContentPresenter - { - Name = "PART_Content", - [!ContentPresenter.ContentProperty] = parent[!TabControl.SelectedContentProperty], - [!ContentPresenter.ContentTemplateProperty] = parent[!TabControl.SelectedContentTemplateProperty], - } - } + Children = + { + new ItemsPresenter + { + Name = "PART_ItemsPresenter", + [!TabStrip.ItemsProperty] = parent[!TabControl.ItemsProperty], + [!TabStrip.ItemTemplateProperty] = parent[!TabControl.ItemTemplateProperty], + }, + new ContentPresenter + { + Name = "PART_Content", + [!ContentPresenter.ContentProperty] = parent[!TabControl.SelectedContentProperty], + [!ContentPresenter.ContentTemplateProperty] = parent[!TabControl.SelectedContentTemplateProperty], + } + } }); }