WPF:如何在IValueConverter抛出的UI中显示错误消息?

时间:2011-08-27 18:10:49

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

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

问题是关于错误处理。 我想检查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处理的 - 这不是问题)。

1 个答案:

答案 0 :(得分:2)

它严格依赖于您的UI设计,换句话说,如何您将向用户通知问题。 我会说使用Dependency Properties。例如。

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

我的意思是使用Dependency Properties,它最终会在最终用户界面中取决于您的应用设计和您的选择。

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

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

希望这有帮助。