INotifyDataErrorInfo - 控件周围出现意外的红色边框

时间:2015-02-10 14:38:43

标签: wpf

我有一个使用类似于this article的模式实现INotifyDataErrorInfo的模型类(虽然我的不同步)。其中一个属性上有Range DataAnnotation属性。当我运行应用程序并在绑定的TextBox中输入无效值时,UI如下所示: -

enter image description here

不仅在TextBox周围绘制红色边框(红色三角形是自定义样式的一部分),而且对于此模型类型,整个DataTemplate 周围也会出现红色边框。为什么后者发生了,我怎么能阻止呢?

1 个答案:

答案 0 :(得分:0)

在被提示通过@ canto7的评论查看代码并进行更多挖掘之后,我想我现在看到了问题。对于实体级错误的含义似乎存在一些混淆,例如this SO question

我使用的INDEI实现(以及我怀疑的很多其他实现)将其解释为"返回每个属性的每个验证错误"。实际上我认为实体级错误意味着完全相反 - 它们是针对特定属性记录的验证错误。例如,一些涉及多个属性和/或其他类的复杂验证规则。

这完全取决于您的要求。仅记录特定于属性的错误可能就足够了,在这种情况下GetErrors(empty string)应该返回null。但是,如果您确实需要记录"实体级"验证错误然后您将需要实现此功能(大多数INDEI文章不要),并从GetErrors(empty string)返回这些错误。

请记住,正如我所发现的那样,返回错误可能会产生不良的UI效果。