Validation.Error事件给出了奇怪的行为

时间:2013-07-11 07:02:29

标签: c# wpf validation events

当控件上存在验证错误时,我使用名为wpf的{​​{1}}事件来了解cs代码。

当他第一次使用Validation.Error来参加活动时创建错误。

一旦控件出现错误,另一个错误就是两次到事件中:

第一次出现ValidationErrorEventAction.Added

第二次出现ValidationErrorEventAction.Added

搜索后,我在以下问题中找到了这个主题: Validation.Error giving strange behavior

似乎当控件上出现错误时他想删除错误,然后添加一个新错误,它会以相反方式出现问题,它会添加一个新错误先删除。

任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我找到了一种了解方法。

我保留一个包含变量名称和错误列表的字典:

 private Dictionary<string, List<ValidationError>> invalidList = new Dictionary<string, List<ValidationError>>();

每次向变量添加错误时,我都会将其添加到错误列表中,并在错误清除后将其从错误列表中删除。

然后我可以看到变量是否有任何错误或根本没有错误。

(我需要知道变量的名称,你可以做任何字典包含控件或你需要的东西)

答案 1 :(得分:0)

我找到了一种更简单的方法来知道是否仍然存在验证错误:

在ValidationErrorEventArgs内部,有一个变量指示仍然存在验证错误。

已解决此问题的Validation.Error事件实现示例:

    private void TextBox_Error(object sender, ValidationErrorEventArgs e)
    {
        if (e.Action == ValidationErrorEventAction.Added)
        {
            ((Control)sender).ToolTip = e.Error.ErrorContent.ToString();
        }
        else
        {
            if (!((BindingExpressionBase)e.Error.BindingInError).HasError)
                ((Control)sender).ToolTip = "";
        }
    }