From 2d1d27bc2e9f8914968d65cd18beab30ccbe973c Mon Sep 17 00:00:00 2001 From: Max Katz Date: Wed, 25 Jan 2023 01:03:19 -0500 Subject: [PATCH] Fix TemplateBinding with converter inside of MultiBinding --- .../Avalonia.Markup/Data/TemplateBinding.cs | 4 +-- .../Data/TemplateBindingTests.cs | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/Markup/Avalonia.Markup/Data/TemplateBinding.cs b/src/Markup/Avalonia.Markup/Data/TemplateBinding.cs index 4270063f87..ba321db144 100644 --- a/src/Markup/Avalonia.Markup/Data/TemplateBinding.cs +++ b/src/Markup/Avalonia.Markup/Data/TemplateBinding.cs @@ -137,9 +137,9 @@ namespace Avalonia.Data templatedParent.GetValue(Property) : _target.TemplatedParent; - if (Converter is not null && _targetType is not null) + if (Converter is not null) { - value = Converter.Convert(value, _targetType, ConverterParameter, CultureInfo.CurrentCulture); + value = Converter.Convert(value, _targetType ?? typeof(object), ConverterParameter, CultureInfo.CurrentCulture); } PublishNext(value); diff --git a/tests/Avalonia.Markup.UnitTests/Data/TemplateBindingTests.cs b/tests/Avalonia.Markup.UnitTests/Data/TemplateBindingTests.cs index 979dbec674..1e56981b98 100644 --- a/tests/Avalonia.Markup.UnitTests/Data/TemplateBindingTests.cs +++ b/tests/Avalonia.Markup.UnitTests/Data/TemplateBindingTests.cs @@ -248,6 +248,38 @@ namespace Avalonia.Markup.UnitTests.Data // binding is initiated. Assert.Equal(new[] { "foo" }, converter.Values); } + + [Fact] + public void Should_Execute_Converter_Without_Specific_TargetType() + { + // See https://github.com/AvaloniaUI/Avalonia/issues/9766 + var source = new Button + { + Template = new FuncControlTemplate