Как подавить проверку INotifyDataErrorInfo для свойства

У меня есть классный инвентарь INotifyDataErrorInfo У меня есть некоторые свойства с уведомлением об ошибках. например,

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

Этот класс наследуется множеством других классов. Все работает отлично. Теперь у меня есть одно место, где я не хочу показывать уведомление в пользовательском интерфейсе для конкретной операции, и мне нужно уведомление после операции. Есть ли в любом случае я могу подавить уведомление.

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}""/>

это не отключает проверку, только скрывает визуальный индикатор ошибки


viewModel, полученный из Request, может переопределить метод GetErrors (если он виртуальный) и отключить уведомление свойства LineOfBusinessIdentifier при некоторых условиях:

псевдокод:

override GetErrors(string propertyName) 
{
    if (someCondition)
       return base.GetErrors().Where(prop != LineOfBusinessIdentifier)
    else
       return base.GetErrors()
}
Другие вопросы по тегам