2016-04-11 3 views
0

У меня есть классные средства 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, привязка не проверяет и не сообщает об ошибках. Значение по умолчанию верно

"{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, полученный из запроса может переопределить GetErrors метод (если он виртуальный) и отключить LineOfBusinessIdentifier уведомление свойств при некоторых условиях:

псевдокода:

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

@AbinMathew, дважды проверено: ValidatesOnNotifyDataErrors не DependencyProperty так Binding не работает. Но если логика проверки является нетривиальной, не следует ли ее сообщать/не сообщать с помощью методов GetErrors в зависимости от какого-либо условия? – ASh

+0

Переопределение - это решение, для которого я собираюсь. Это облегчает мою жизнь. Спасибо за ваше время. –

Смежные вопросы