使用IDataErrorInfo并设置Validation.HasError样式

时间:2009-07-17 11:20:50

标签: wpf validation idataerrorinfo

在WPF中使用IDataErrorInfo和样式我想要创建表单,我可以在验证数据时为最终用户提供三种不同的状态 使场景更清晰

1)我旁边有文本框我有图标,它为最终用户提供了什么样的输入文本框期望 - 初始状态带有信息图标

2)一旦用户输入数据,它就会对其进行验证并确定它是否有效 - 大多数情况下,它会显示十字(X)图标,表示无效数据

3)因为它在UpdateSourceTrigger="PropertyChanged"上验证,它会在验证后立即将交叉图标变为绿色复选标记

[         ] i (tooltip- Any valid user name )
[Ga       ] X (tooltip- Invalid user name. Must be 5 char long)
[Gaurav   ] * (it will show only correct icon, meaning valid value)

我如何使用IDataErrorInfo和Style实现这一点,我尝试这样做但是只要我的表单被加载,它就会使所有数据无效并在第一次显示交叉图标。我想为三种状态显示不同的工具提示和不同的图标(Initial infoInvalid dataValid data

2 个答案:

答案 0 :(得分:1)

IDataErrorInfo不包含任何表示三种状态的方法。它只知道“错误”和“没有错误”。

最佳解决方案可能是通过以下方式绕过IDataErrorInfo的使用:

  1. 为每个经过验证的字段创建一个属性,该字段为其相关字段提供三态状态。
  2. 将视图中的ContentControl绑定到这些三态属性。
  3. 为所有这些新ContentControl设置单一样式。
  4. 使用样式中的触发器为错误状态和有效状态分配ContentControl.ContentTemplate属性。对于初始状态,使用样式本身中的Setter不显示任何内容。
  5. 您可能还必须为每个字段的工具提示文本创建属性。

答案 1 :(得分:0)

你可以在这里找到一个很好的例子WPF Apps With The Model-View-ViewModel Design Pattern