diff --git a/src/Markup/Avalonia.Markup.Xaml/ApiCompatBaseline.txt b/src/Markup/Avalonia.Markup.Xaml/ApiCompatBaseline.txt new file mode 100644 index 0000000000..c87dcacda4 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/ApiCompatBaseline.txt @@ -0,0 +1,4 @@ +Compat issues with assembly Avalonia.Markup.Xaml: +MembersMustExist : Member 'public Avalonia.Data.Binding Avalonia.Markup.Xaml.Templates.TreeDataTemplate.ItemsSource.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'public void Avalonia.Markup.Xaml.Templates.TreeDataTemplate.ItemsSource.set(Avalonia.Data.Binding)' does not exist in the implementation but it does exist in the contract. +Total Issues: 2 diff --git a/src/Markup/Avalonia.Markup.Xaml/Templates/TreeDataTemplate.cs b/src/Markup/Avalonia.Markup.Xaml/Templates/TreeDataTemplate.cs index b8e1c2df80..d785ac4ac0 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Templates/TreeDataTemplate.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Templates/TreeDataTemplate.cs @@ -2,7 +2,9 @@ using System; using Avalonia.Controls; using Avalonia.Controls.Templates; using Avalonia.Data; +using Avalonia.Data.Core; using Avalonia.Markup.Parsers; +using Avalonia.Markup.Xaml.MarkupExtensions; using Avalonia.Metadata; namespace Avalonia.Markup.Xaml.Templates @@ -16,7 +18,7 @@ namespace Avalonia.Markup.Xaml.Templates public object Content { get; set; } [AssignBinding] - public Binding ItemsSource { get; set; } + public BindingBase ItemsSource { get; set; } public bool Match(object data) { @@ -34,7 +36,13 @@ namespace Avalonia.Markup.Xaml.Templates { if (ItemsSource != null) { - var obs = ExpressionObserverBuilder.Build(item, ItemsSource.Path); + var obs = ItemsSource switch + { + Binding reflection => ExpressionObserverBuilder.Build(item, reflection.Path), + CompiledBindingExtension compiled => new ExpressionObserver(item, compiled.Path.BuildExpression(false)), + _ => throw new InvalidOperationException("TreeDataTemplate currently only supports Binding and CompiledBindingExtension!") + }; + return InstancedBinding.OneWay(obs, BindingPriority.Style); }