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 @@