Nas*_*adi 2 c# generics wpf xaml binding
我想在我的 WPF 应用程序中创建一个通用数据类型转换器,比如这个类模板:
[ValueConversion(typeof(T), typeof(string))]
class DataTypeConverter<T> : IValueConverter
Run Code Online (Sandbox Code Playgroud)
将 int、double、byte、ushort 等数据类型转换为字符串,反之亦然,并在我的类的不同属性类型的两种绑定中使用它,然后通过这行代码简单地创建任何类型:
class ushortTypeConverter : DataTypeConverter<ushort>{}
Run Code Online (Sandbox Code Playgroud)
如果可能,在错误输入的情况下绑定的文本框中显示验证消息。
是否可以编写这样的类模板?
不幸的是,您不能使用泛型属性(typeof(T)在[ValueConversion(typeof(T), typeof(string))]。请参阅为什么 C# 禁止泛型属性类型?了解更多信息。换言之,这是一种编译器简化,以避免被认为是罕见的边缘情况。
除此之外,我想不出这种方法行不通的原因。但是,有些类如System.ComponentModel.TypeConverter可能可以在没有泛型的情况下为您完成大部分转换。将其包装在一个简单的转换器中可能更容易。
否则,有很多 IValueConverters 可以完成您需要的全部或部分任务。看:
| 归档时间: |
|
| 查看次数: |
3985 次 |
| 最近记录: |