using System.Collections.Generic; using Avalonia.Controls; using Avalonia.Controls.Presenters; using Avalonia.Markup.Xaml.Templates; using Avalonia.Metadata; using Avalonia.UnitTests; using Xunit; namespace Avalonia.Markup.Xaml.UnitTests.Xaml { public class SampleTemplatedObject : StyledElement { [Content] public List Content { get; set; } = new List(); public string Foo { get; set; } } public class SampleTemplatedObjectTemplate { [Content] [TemplateContent(TemplateResultType = typeof(SampleTemplatedObject))] public object Content { get; set; } } public class SampleTemplatedObjectContainer { public SampleTemplatedObjectTemplate Template { get; set; } } public class GenericTemplateTests { [Fact] public void DataTemplate_Can_Be_Empty() { using (UnitTestApplication.Start(TestServices.StyledWindow)) { var xaml = @" "; var container = (SampleTemplatedObjectContainer)AvaloniaRuntimeXamlLoader.Load(xaml, typeof(GenericTemplateTests).Assembly); var res = TemplateContent.Load(container.Template.Content); Assert.Equal(res.Result, res.NameScope.Find("root")); Assert.Equal(res.Result.Content[0], res.NameScope.Find("child1")); Assert.Equal(res.Result.Content[1], res.NameScope.Find("child2")); Assert.Equal("foo", res.Result.Content[0].Foo); Assert.Equal("bar", res.Result.Content[1].Foo); } } } }