我有一个实现IValueConverter的泛型类.就像是:
class MyValueConverter<T> : IValueConverter
使用XAML 2009,我可以像这样使用它:
<my:MyValueConverter x:TypeArguments='x:String'/>
但显然不允许“编译”的XAML(我想我们必须等待.NET 5)
class FooMyValueConverter : MyValueConverter<Foo>
是否可以仅使用XAML 2006在标记中执行此操作?
@R_403_323@
您可以使用自定义
MarkupExtension(
archive)(
v4)执行此操作.就像是:
public class MyMarkupExtension : MarkupExtension { public MyMarkupExtension() { this.Type = /* some default type */; } public MyMarkupExtension(Type type) { this.Type = type; } public Type Type { get; private set; } public override object ProvideValue(IServiceProvider serviceProvider) { Type type = typeof(MyValueConverter<>).MakeGenericType(this.Type); return Activator.CreateInstance(type); } }
那你就像{Binding … Converter = {local:MyMarkup {x:Type BounceEase}}}一样使用它