Browse Source

Don't bind to AssignBinding

pull/2322/head
Nikita Tsukanov 7 years ago
parent
commit
2809daf6b8
  1. 4
      src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPropertyAssignmentsTransformer.cs
  2. 2
      src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs

4
src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPropertyAssignmentsTransformer.cs

@ -20,6 +20,10 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
var vn = pv.Values[0]; var vn = pv.Values[0];
if (vn.Type.GetClrType().Equals(XamlIlPseudoType.Null)) if (vn.Type.GetClrType().Equals(XamlIlPseudoType.Null))
return node; return node;
if (pv.Property.GetClrProperty().CustomAttributes
.Any(a => a.Type.Equals(types.AssignBindingAttribute)))
return node;
// Special handling for markup extensions // Special handling for markup extensions
if (vn.Type.IsMarkupExtension) if (vn.Type.IsMarkupExtension)

2
src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs

@ -14,6 +14,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
public IXamlIlType IDisposable { get; } public IXamlIlType IDisposable { get; }
public XamlIlTypeWellKnownTypes XamlIlTypes { get; } public XamlIlTypeWellKnownTypes XamlIlTypes { get; }
public IXamlIlType Transitions { get; } public IXamlIlType Transitions { get; }
public IXamlIlType AssignBindingAttribute { get; }
public AvaloniaXamlIlWellKnownTypes(XamlIlAstTransformationContext ctx) public AvaloniaXamlIlWellKnownTypes(XamlIlAstTransformationContext ctx)
{ {
@ -25,6 +26,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
IBinding = ctx.Configuration.TypeSystem.GetType("Avalonia.Data.IBinding"); IBinding = ctx.Configuration.TypeSystem.GetType("Avalonia.Data.IBinding");
IDisposable = ctx.Configuration.TypeSystem.GetType("System.IDisposable"); IDisposable = ctx.Configuration.TypeSystem.GetType("System.IDisposable");
Transitions = ctx.Configuration.TypeSystem.GetType("Avalonia.Animation.Transitions"); Transitions = ctx.Configuration.TypeSystem.GetType("Avalonia.Animation.Transitions");
AssignBindingAttribute = ctx.Configuration.TypeSystem.GetType("Avalonia.Data.AssignBindingAttribute");
AvaloniaObjectBindMethod = AvaloniaObjectExtensions.FindMethod("Bind", IDisposable, false, IAvaloniaObject, AvaloniaObjectBindMethod = AvaloniaObjectExtensions.FindMethod("Bind", IDisposable, false, IAvaloniaObject,
AvaloniaProperty, AvaloniaProperty,
IBinding, ctx.Configuration.WellKnownTypes.Object); IBinding, ctx.Configuration.WellKnownTypes.Object);

Loading…
Cancel
Save