说,我有一个字段Email
,我希望在用户输入时显示RegEx errors
。但它是一个可选字段,因此如果用户提交表单,则应清除此字段任何错误,都应发送null
值。
我已在INofityDataErrorInfo
中实施了ViewModel
界面。
答案 0 :(得分:0)
如果您已正确实施INotifyDataErrorInfo
界面,则应该能够举起ErrorsChanged
事件,并确保GetErrors
方法返回null
Email
1}} property:
...
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
方法。