【问题标题】:What is the best practice for WPF ValueConverter error handling?WPF ValueConverter 错误处理的最佳实践是什么?
【发布时间】:2010-03-16 10:59:37
【问题描述】:

应该实现两个功能,我想知道我需要对输入进行哪种类型的验证以及如何管理错误。

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 ivalueconverter


    【解决方案1】:

    我个人检查类型和值,然后转换它。如果由于任何原因无法转换,那么我只需返回 value 未转换。我不会抛出任何异常或进行任何日志记录 - 大多数时候很容易看到转换是否失败,因为您在 UI 中看不到预期的项目。在转换器中记录错误可能非常昂贵,因此我避免使用它。

    数据绑定(通常)会静默失败(我曾在 Silverlight 中与转换器绑定过一次大匹配),您可以检查“输出”窗口是否有任何错误,并且在其中设置条件断点非常简单必要时使用转换器来调试任何问题。

    【讨论】:

    • 一直在研究这个,这似乎是最好的方法。您可以使用 Style DataTrigger 来检查绑定返回的类型并以不同方式处理原始/转换后的数据......可能会抛出一个详细说明这一点的答案。
    【解决方案2】:

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

    在我看来,应该没有必要这样做,并且对于可为空类型之类的东西,这些应该在转换器中正确处理,因为其他所有内容都应该在调用转换器之前处理。 IE。如果用户在数字字段中输入字符串,则应该通过验证而不是转换器来捕获。

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 2020-06-05
      • 2019-10-03
      • 2019-07-12
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 2017-11-26
      相关资源
      最近更新 更多