【问题标题】:WPF: How to show error message in UI thrown from IValueConverter?WPF:如何在从 IValueConverter 引发的 UI 中显示错误消息?
【发布时间】:2011-11-05 04:39:26
【问题描述】:

我实现了类型CustomDoubleConverter,它实现了IValueConverter。 我在xaml-file 中包含了Converter={StaticResource customDoubleConverter} 和相应的资源。 它工作正常。

问题是关于错误处理的。 我想检查 UI 字符串是否代表正确的double。如果否,则根据无效输入在标签上显示两条消息之一:空字符串或其他非双字符串。

在从字符串类型转换过程中发生错误时,应使用哪种方法在 UI 表单上显示自定义错误消息?

我尝试通过异常执行,但收到​​未处理的异常。 Tip: Do not throw an exception in a IValueConverter 说服我不要再尝试异常了。

在正确处理 MVVM 视图模型中的IDataErrorInfo 接口进行转换后,我能够检查双精度。但是它可以在成功的字符串到双重转换之后完成,这不是上面描述的情况。

我的文本框也有 ValidatesOnDataErrors="True"ValidatesOnExceptions="True"

如果有帮助,我会使用 MVVM 方法进行设计(类似于 WPF Apps With The Model-View-ViewModel Design Pattern 中描述的方法)。

简而言之:

我想从 TextBox 解析 double 并在 UI 标签上显示三个错误消息之一:

  • 空字符串(如上所述),
  • 无效的双字符串(如上所述),以及
  • 负数(上面没有提到,但我是通过IDataErrorInfo处理的——这不是问题)。

【问题讨论】:

    标签: c# wpf data-binding error-handling type-conversion


    【解决方案1】:

    这完全取决于您的 UI 设计,或者换句话说,如何将问题通知给用户。 我会说使用Dependency Properties。例如。

    假设用户在 TextBox 中插入了一个值。 TextBox 具有 DataError 依赖项 string 属性。转换器在失败的情况下,只需将该属性设置为适当的用户字符串(可以从本地化资源中恢复)。设置一次属性,TextBox 变为红色,清除内容并打印出转换器生成的错误文本。

    我的意思是这个想法是使用Dependency Properties,它最终在最终 UI 中的效果取决于您的应用设计和您的选择。

    还有另一个相关的 SO 链接:

    How to handle exception in Value converter so that custom error message can be displayed

    希望这会有所帮助。

    【讨论】:

    • 我将通过表单上的标签通知用户,更新问题。我使用 MVVM 方法进行设计。
    • 好的,所以你可以在标签上设置一个依赖属性,当转换器失败时,它会设置它。标签接收到该信号变得可见并显示从转换器传递的文本。
    • 谢谢,我会试试的,只是在使用 WPF 方面的经验很少。
    • V!通过 ValidationRule 实现,在您的答案中的最后一个链接中找到。 DependencyProperty 似乎使用起来更复杂。谢谢!
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2011-11-03
    • 2016-08-22
    • 2013-01-19
    相关资源
    最近更新 更多