如何在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设计,或者换句话说,你如何通知用户一个问题。我会说使用依赖属性。为例。
假设用户在TextBox中插入一个值。TextBox有一个DataError依赖string
属性。转换器在失败的情况下,只需将该属性设置为适当的用户字符串(可以从本地化资源中恢复)。设置一次属性,TextBox变为红色,清除内容并打印出由转换器生成的错误文本。
我的意思是这个想法是使用依赖属性,它将如何结束在最终的UI取决于你的应用程序设计和你的选择。
还有一个相关的SO链接:
如何处理值转换器中的异常,以便显示自定义错误消息