From 52135b3a07bb9fdeb973754eb63967969e75f71e Mon Sep 17 00:00:00 2001 From: Benedikt Stebner Date: Mon, 7 Mar 2022 10:32:01 +0100 Subject: [PATCH] Fix compiled method to command binding --- .../CompilerExtensions/XamlIlBindingPathHelper.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlBindingPathHelper.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlBindingPathHelper.cs index db4cee32b0..c8de8f00f6 100644 --- a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlBindingPathHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlBindingPathHelper.cs @@ -72,10 +72,19 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions private static XamlIlBindingPathNode TransformForTargetTyping(XamlIlBindingPathNode transformed, AstTransformationContext context) { - if (context.ParentNodes().OfType().FirstOrDefault().Property.Getter.ReturnType == context.GetAvaloniaTypes().ICommand - && transformed.Elements[transformed.Elements.Count - 1] is XamlIlClrMethodPathElementNode method) + var parentNode = context.ParentNodes().OfType().FirstOrDefault(); + + if (parentNode == null) + { + return transformed; + } + + var lastElement = + transformed.Elements[transformed.Elements.Count - 1]; + + if (parentNode.Property?.Getter?.ReturnType == context.GetAvaloniaTypes().ICommand && lastElement is XamlIlClrMethodPathElementNode methodPathElement) { - IXamlMethod executeMethod = method.Method; + IXamlMethod executeMethod = methodPathElement.Method; IXamlMethod canExecuteMethod = executeMethod.DeclaringType.FindMethod(new FindMethodMethodSignature($"Can{executeMethod.Name}", context.Configuration.WellKnownTypes.Boolean, context.Configuration.WellKnownTypes.Object)); List dependsOnProperties = new(); if (canExecuteMethod is not null)