Как подавить проверку 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()
}