WPF的Validation.Error和Validation.HasError的奇怪行为

时间:2009-06-04 08:50:26

标签: c# wpf validation

我有TextBox,它应该只包含一个有效的整数。它使用自定义ValidationRule进行验证。我遇到的问题是,当TextBox.Text无效时,说“3a”,我输入另一个“a”,然后TextBox的附加属性Validation.HasError从TRUE变为 - > FALSE - >真正。只要Validation.HasError为FALSE,我的软件就会做出反应,但TextBox.Text在那个时间点是“3a”,这是不可取的。

以下是我看到的事情: TextBox.Text =“3a”和Validation.HasError = TRUE。现在我输入一个额外的“a”,然后发生以下情况。首先,验证过程删除现有的ValidationError,并使用ValidationErrorEventArgs.Action =“Removed”引发Validation.Error事件。现在Validation.HasError = FALSE。之后,验证过程添加了一个新的ValidationError,并使用ValidationErrorEventArgs.Action =“Added”引发Validation.Error事件。现在Validation.HasError = TRUE了。

我所能做的就是对Validation.Error事件做出反应,然后检查源对象的Validation.HasError附加属性,看它是真还是假。不幸的是,当TextBox.Text =“3a”显然不是一个有效的整数时,Validation.HasError返回false。

任何想法都会非常有用。谢谢:))

1 个答案:

答案 0 :(得分:0)

您可能需要具体检查是否添加或删除了错误,以防验证取决于:

(e.Action == ValidationErrorEventAction.Added) doStuff();