Browse Source
Merge pull request #4532 from jp2masa/compiled-bindings-fixes
Fixed TreeDataTemplate.ItemsSource for compiled bindings
pull/4561/head
danwalmsley
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
14 additions and
2 deletions
src/Markup/Avalonia.Markup.Xaml/ApiCompatBaseline.txt
src/Markup/Avalonia.Markup.Xaml/Templates/TreeDataTemplate.cs
@ -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
@ -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 ) ;
}