为什么IDataErrorInfo无法捕获默认消息

时间:2018-12-14 17:39:30

标签: wpf validation

为什么我的IDataErrorInfo接口模型可以验证文本,但不能验证默认的Windows int验证错误?

2 个答案:

答案 0 :(得分:0)

IDataErrorInfo接口验证要求将要更新为数据源的输入值正确转换为源类型,因此无法将空字符串字段正确转换为int值,因此源数据将保留原始值,并且IDataErrorInfo无法通知该错误。 您将需要一些自定义验证规则。

答案 1 :(得分:0)

您只能将int属性设置为有效的int值,而不能设置其他任何属性。验证视图将属性设置为int并不是视图模型的责任。该类型是视图模型API的一部分,并且是视图模型与任何使用类(包括视图)之间的协定。

这种验证是由WPF框架本身执行的。如果要自定义它,则可以在视图或控件中使用验证规则。有一个可用的示例here

但是您不能在视图模型中做任何事情(除了将属性的类型更改为string之外,但这通常是一个坏主意)。