首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何抑制属性的INotifyDataErrorInfo验证

如何抑制属性的INotifyDataErrorInfo验证
EN

Stack Overflow用户
提问于 2016-04-11 20:21:00
回答 1查看 802关注 0票数 0

我有一个实现INotifyDataErrorInfo的类,我有一些带有错误通知的属性。例如,

代码语言:javascript
复制
public class Request : INotifyPropertyChanged, INotifyDataErrorInfo
{
    public string LineOfBusinessIdentifier
    {
        get { return  lineOfBusinessIdentifier; }
        set 
        { 
            lineOfBusinessIdentifier = value;
            ValidateLineOfBusiness();
            NotifyPropertyChanged();
        }
    }
      // ValidateLineOfBusiness() Implementation for validation.
}

这个类是由许多其他类继承的。一切正常。现在,我有一个地方,我不想显示通知在UI中的一个特定的操作,并需要通知后的操作。还有我可以取消通知吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-11 20:34:31

如果ValidatesOnNotifyDataErrors (自.Net 4.5引入)设置为false,则绑定不会检查并报告错误。默认值为真

代码语言:javascript
复制
"{Binding Path=LineOfBusinessIdentifier, ValidatesOnNotifyDataErrors=False}"

还可以删除Validation.ErrorTemplate (在视图中隐藏错误通知),并在触发器设置器中重置它。

代码语言:javascript
复制
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>

<!--need custom error template-->
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource ErrorTemplate}""/>

这并不会禁用验证,只会隐藏错误的可视指示器

从请求派生的viewModel可以覆盖GetErrors方法(如果它是虚拟的),并在某些条件下禁用LineOfBusinessIdentifier属性通知:

伪码:

代码语言:javascript
复制
override GetErrors(string propertyName) 
{
    if (someCondition)
       return base.GetErrors().Where(prop != LineOfBusinessIdentifier)
    else
       return base.GetErrors()
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36558501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档