From ca520a233264208ccb489cd16d3ed2d1bda38883 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 13 Apr 2024 13:07:07 +0300 Subject: [PATCH] Added failing test cases for #10856. (#15338) This issue only shows up when using the cecil backend for XamlX and so can't easily be tested with unit tests. The easiest way to test it is to add it to a sample project, `BindingDemo` is as good as anywhere I think. --- samples/BindingDemo/GenericMarkupExtension.cs | 14 +++++++++ samples/BindingDemo/GenericValueConverter.cs | 30 +++++++++++++++++++ samples/BindingDemo/MainWindow.xaml | 15 ++++++++++ 3 files changed, 59 insertions(+) create mode 100644 samples/BindingDemo/GenericMarkupExtension.cs create mode 100644 samples/BindingDemo/GenericValueConverter.cs diff --git a/samples/BindingDemo/GenericMarkupExtension.cs b/samples/BindingDemo/GenericMarkupExtension.cs new file mode 100644 index 0000000000..aed0700cb8 --- /dev/null +++ b/samples/BindingDemo/GenericMarkupExtension.cs @@ -0,0 +1,14 @@ +using System; +using Avalonia.Markup.Xaml; + +namespace BindingDemo; + +internal class GenericMarkupExtension : MarkupExtension +{ + public T Value { get; set; } + + public override object ProvideValue(IServiceProvider serviceProvider) + { + return $"{Value?.GetType().Name}: {Value}"; + } +} diff --git a/samples/BindingDemo/GenericValueConverter.cs b/samples/BindingDemo/GenericValueConverter.cs new file mode 100644 index 0000000000..ff0e9c153e --- /dev/null +++ b/samples/BindingDemo/GenericValueConverter.cs @@ -0,0 +1,30 @@ +using System; +using System.Globalization; +using Avalonia.Data.Converters; + +#nullable enable + +namespace BindingDemo; + +public class GenericValueConverter : IValueConverter +{ + public GenericValueConverter() + { + + } + + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value is T) + { + return $"{typeof(T).Name}: {value}"; + } + + return null; + } + + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + { + throw new NotSupportedException(); + } +} diff --git a/samples/BindingDemo/MainWindow.xaml b/samples/BindingDemo/MainWindow.xaml index a00bed37f9..f14ad59cd5 100644 --- a/samples/BindingDemo/MainWindow.xaml +++ b/samples/BindingDemo/MainWindow.xaml @@ -120,5 +120,20 @@