-2
사용자가 입력하는 동안 Email
필드가 있는데 RegEx errors
을 표시하려고합니다. 그러나 선택적 필드이므로 사용자가 양식을 제출하면이 필드는 오류 및 null
값을 보내야합니다.INofityDataErrorInfo에 의해 생성 된 오류를 지우는 방법
ViewModel
에 INofityDataErrorInfo
인터페이스를 구현했습니다.
사용자가 입력하는 동안 Email
필드가 있는데 RegEx errors
을 표시하려고합니다. 그러나 선택적 필드이므로 사용자가 양식을 제출하면이 필드는 오류 및 null
값을 보내야합니다.INofityDataErrorInfo에 의해 생성 된 오류를 지우는 방법
ViewModel
에 INofityDataErrorInfo
인터페이스를 구현했습니다.
당신이 INotifyDataErrorInfo
인터페이스를 구현 한 경우 올바르게 단지 ErrorsChanged
이벤트를 발생하고 GetErrors
방법은 Email
속성에 대한 null
를 반환 있는지 확인 할 수 있어야한다 :
...
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
이벤트를 발생시키는 런타임