如何抑制属性的INotifyDataErrorInfo验证

时间:2016-04-11 20:21:01

标签: c# wpf xaml inotifydataerrorinfo

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

public class Request : INotifyPropertyChanged, INotifyDataErrorInfo
{
    public string LineOfBusinessIdentifier
    {
        get { return  lineOfBusinessIdentifier; }
        set 
        { 
            lineOfBusinessIdentifier = value;
            ValidateLineOfBusiness();
            NotifyPropertyChanged();
        }
    }
      // ValidateLineOfBusiness() Implementation for validation.
}

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

1 个答案:

答案 0 :(得分:1)

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

"{Binding Path=LineOfBusinessIdentifier, ValidatesOnNotifyDataErrors=False}"

也可以擦除Validation.ErrorTemplate(隐藏视图中的错误通知)并在触发器设置器中重置

<Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>

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

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

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

伪码:

override GetErrors(string propertyName) 
{
    if (someCondition)
       return base.GetErrors().Where(prop != LineOfBusinessIdentifier)
    else
       return base.GetErrors()
}