繁体   English   中英

如何清除WPF IDataErrorInfo验证错误

[英]How to Clear WPF IDataErrorInfo Validation Errors

我正在使用IDataErrorInfo继承的业务对象进行验证。

public string UserId { get; set; }

public string this[string columnName]
    {
        get
        {
            string result = null;

            if (columnName == "UserId")
            {
                if (string.IsNullOrEmpty(UserId))
                    result = "Please enter User Id";
            }
        }
    }

单击菜单上的一个按钮时,我想清除所有验证错误-例如-注销。

窗口使“登录”面板可见,但前一个面板的验证错误标记仍出现在当前登录面板中。

我尝试了所有选项来分配NULL数据上下文,新鲜的实体对象...但是没有运气

我感谢您的帮助。

使用IDataErrorInfo接口是错误优先类型的方法。 这意味着您将看到错误,直到将其清除。 您会看到索引器上没有设置器。

原始的IDataErrorInfo接口本身并不太有用,因为它一次只能处理一个错误。 我将以下字段添加到我的BaseDataType类中:

protected ObservableCollection<string> errors = new ObservableCollection<string>();

在我的实际数据类中,我具有以下属性:

public override ObservableCollection<string> Errors
{
    get
    {
        errors = new ObservableCollection<string>();
        errors.AddUniqueIfNotEmpty(this["Property1"]);
        errors.AddUniqueIfNotEmpty(this["Property2"]);
        errors.AddUniqueIfNotEmpty(this["PropertyN"]);
        return errors;
    }
}

AddUniqueIfNotEmpty方法是一个扩展方法,我认为这是不言自明的。 此属性可以多次调用索引器,并将所有结果编译到ObservableCollection<string>集合中,准备在UI中显示。 更新Property1Property2PropertyN时,您需要调用名称为ErrorsINotifyPropertyChanged.PropertyChanged事件以使此工作有效。

您可以执行类似的操作,但是当您想清除错误时,可以添加一个setter来传递空的集合或字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM