0

我使用wpf名为:的事件Validation.Error来了解控件何时出现验证错误。

当他第一次出现错误时,他带着ValidationErrorEventAction.Added.

一旦控件出现错误,另一个错误将出现两次

第一次附带ValidationErrorEventAction.Added.

第二次它带有ValidationErrorEventAction.Removed.

搜索后,我在以下问题上找到了这个主题:Validation.Error give奇怪的行为

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

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

4

2 回答 2

1

我找到了一个知道的方法。

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

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

每次将错误添加到变量中时,我都会将其添加到错误列表中,当错误被清除时,我会将其从他的错误列表中删除。

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

(我需要知道变量的名称,您可以执行包含控件的字典或您需要的内容)

于 2013-07-11T08:01:03.477 回答
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 = "";
        }
    }
于 2018-10-17T12:08:20.617 回答