说,我有一个字段Email
,我想RegEx errors
在用户输入时显示。但它是一个可选字段,所以如果用户提交表单,这个字段应该清除任何错误,并且null
应该发送值。
我已经INofityDataErrorInfo
在我的ViewModel
.
说,我有一个字段Email
,我想RegEx errors
在用户输入时显示。但它是一个可选字段,所以如果用户提交表单,这个字段应该清除任何错误,并且null
应该发送值。
我已经INofityDataErrorInfo
在我的ViewModel
.
如果您已经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