[英]How do I use the targetType parameter in an IValueConverter?
[英]Should I use the targetType parameter of the IValueConverter
每次我写一个值转换器时,我都想知道如何处理在IValueConverter的Convert
和ConvertBack
方法中指定的targetType
参数:
object Convert(object value, Type targetType, object parameter, CultureInfo culture)
object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
我注意到很多实现只是通过检查它来使用targetType
( if (targetType == typeof(RequiredType))
)并抛出一些异常或者如果类型不符合预期则返回null值:
但是其中许多(我认为它是大多数)完全忽略了参数:
我尝试使用参数找到一些指导或提示,但不幸的是我发现什么都没有。 这两种方法都在做自己的工作,但其中一种方法更正确吗? 这些方法的优点和缺点是什么? 我应该忽略或使用参数吗?
我个人的观点是不检查参数以允许转换器的使用更灵活,但我很高兴得到你的意见。
调用者将告诉您转换值所需的类型:
true/false
到Visibility
,那么你可以忽略targetType
。 显而易见的是如何使用转换器,不需要抛出异常。 targetType
转换值,例如使用转换器转换为ImageSource
或Brush
。 在第一种情况下,您想要生成图像(例如错误图像),在另一种情况下,您需要一种简单的颜色(例如红色)。 targetType
你的转换器,并且它是否受支持并不明显,那么你可以通过抛出异常来警告开发人员。 我认为最常见的情况是1)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.