如何在UI中显示从IValueConverter抛出的错误消息

本文关键字:错误 消息 IValueConverter UI 显示 | 更新日期: 2023-09-27 18:07:01

我实现了实现IValueConverter的类型CustomDoubleConverter。我将其包含在Converter={StaticResource customDoubleConverter}和相应的资源xaml -file中。

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

哪一种方法应该用来显示自定义错误消息在UI表单当错误发生在类型转换从字符串?

我尝试通过异常执行,但收到未处理的异常。小贴士:不要在IValueConverter中抛出异常说服了我不要再尝试异常。

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

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

如果有用的话,我使用MVVM方法进行设计(类似于WPF应用程序中使用模型-视图-视图模型设计模式的方法)。

简而言之:

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

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

如何在UI中显示从IValueConverter抛出的错误消息

这完全取决于你的UI设计,或者换句话说,你如何通知用户一个问题。我会说使用依赖属性。为例。

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

我的意思是这个想法是使用依赖属性,它将如何结束在最终的UI取决于你的应用程序设计和你的选择。

还有一个相关的SO链接:

如何处理值转换器中的异常,以便显示自定义错误消息