WPF ValueConverter的最佳实践错误处理是什么?

3

需要实现两个函数,我想知道在输入上需要进行什么类型的验证以及如何处理错误。

Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert

End Function

Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack

End Function

我需要检查value的类型和parameter的类型是否符合我的预期。

如果不符合预期,应该返回什么并在其他地方捕获错误行为?还是应该在此处抛出异常或断言?

这里有什么最佳实践或建议要应用吗?


这个回答解决了你的问题吗?WPF ValueConverter - 无法转换值的标准返回 - StayOnTarget
2个回答

5

个人而言,我会先检查类型和值,然后进行转换。如果由于任何原因无法转换,则会返回value的未转换版本。我不会抛出任何异常或记录任何日志——大多数情况下,如果转换失败,因为您在UI中看不到预期的项目。

数据绑定(通常)会默默失败(在Silverlight中,我曾经使用转换器进行绑定时抛出过一次大规模的错误),您可以检查输出窗口是否有任何错误,并且非常简单地向转换器添加条件断点以调试任何问题。


一直在调查这个问题,看起来这是最好的方法。你可以使用 Style 的 DataTrigger 来检查绑定返回的类型,并且以不同的方式处理原始/转换后的数据...也许能详细解答这个问题。 - user1228

0

我只是想知道为什么你需要在转换器中捕获异常?你有例子吗?

在我看来,这是没有必要的。使用可空类型之类的东西时,应该正确地在转换器中处理它们,因为在调用转换器之前应该处理好其他所有事情。例如,如果用户在数字字段中输入字符串,这应该由验证程序捕获而不是转换器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接