Как очистить ошибки, сгенерированные 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 событие.

Другие вопросы по тегам