Как очистить ошибки, сгенерированные INofityDataErrorInfo
Скажи, у меня есть поле Email
и я хочу показать RegEx errors
пока пользователь печатает. Но это необязательное поле, поэтому, если пользователь отправляет форму, это поле должно быть очищено от любых ошибок, и null
значение должно быть отправлено.
Я реализовал INofityDataErrorInfo
интерфейс в моем ViewModel
,
1 ответ
Если вы реализовали INotifyDataErrorInfo
интерфейс правильно, вы должны просто быть в состоянии поднять ErrorsChanged
событие и убедитесь, что GetErrors
метод возвращает null
для Email
имущество:
...
private readonly Dictionary<string, ICollection<string>> _validationErrors = new Dictionary<string, ICollection<string>>();
public string Email { get; set; }
public void Submit()
{
if (_validationErrors.ContainsKey(nameof(Email)))
_validationErrors.Remove(nameof(Email));
RaiseErrorsChanged(nameof(Email));
...
}
public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged;
private void RaiseErrorsChanged(string propertyName)
{
if (ErrorsChanged != null)
ErrorsChanged(this, new DataErrorsChangedEventArgs(propertyName));
}
public System.Collections.IEnumerable GetErrors(string propertyName)
{
if (string.IsNullOrEmpty(propertyName)
|| !_validationErrors.ContainsKey(propertyName))
return null;
return _validationErrors[propertyName];
}
public bool HasErrors
{
get { return _validationErrors.Count > 0; }
}
GetErrors
метод будет вызываться средой выполнения при поднятии ErrorsChanged
событие.