c# – 使用XAML中的Generic IValueConverter
发布时间:2020-12-15 07:46:21 所属栏目:百科 来源:网络整理
导读:我有一个实现IValueConverter的泛型类.就像是: class MyValueConverterT : IValueConverter 使用XAML 2009,我可以像这样使用它: my:MyValueConverter x:TypeArguments='x:String'/ 但显然不允许“编译”的XAML(我想我们必须等待.NET 5) 我目前的解决方法是
我有一个实现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}}}一样使用它 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |