gpt4 book ai didi

c# - 使用 XAML 中的通用 IValueConverter

转载 作者:太空狗 更新时间:2023-10-29 19:39:57 26 4
gpt4 key购买 nike

我有一个实现IValueConverter 的通用类。像这样的东西:

class MyValueConverter<T> : IValueConverter

使用 XAML 2009,我可以这样使用它:

<my:MyValueConverter x:TypeArguments='x:String'/>

但显然“已编译”XAML 不允许这样做(我想我们将不得不等待 .NET 5)

我目前的解决方法是为每次使用对其进行子类化:

class FooMyValueConverter : MyValueConverter<Foo>

是否可以仅使用 XAML 2006 在标记中执行此操作?

最佳答案

您可能可以使用自定义 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}}} 那样使用它

关于c# - 使用 XAML 中的通用 IValueConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5833143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com