From c16817aac524fcca112cd422daadc6744064050a Mon Sep 17 00:00:00 2001 From: Andrey Kunchev Date: Sat, 14 Nov 2020 17:43:49 +0200 Subject: [PATCH] add support for casting after indexer in binding path --- .../Markup/Parsers/BindingExpressionGrammar.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs index 15db7a96e4..637802169d 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/BindingExpressionGrammar.cs @@ -170,6 +170,12 @@ namespace Avalonia.Markup.Parsers { var (ns, owner) = ParseTypeName(ref r); + if(!r.End && r.TakeIf(')')) + { + nodes.Add(new TypeCastNode() { Namespace = ns, TypeName = owner }); + return State.AfterMember; + } + if (r.End || !r.TakeIf('.')) { throw new ExpressionParseException(r.Position, "Invalid attached property name."); @@ -220,6 +226,11 @@ namespace Avalonia.Markup.Parsers } result = ParseBeforeMember(ref r, nodes); + + if(r.Peek == '[') + { + result = ParseIndexer(ref r, nodes); + } } nodes.Add(new TypeCastNode { Namespace = ns, TypeName = typeName });