2017-02-01 3 views

답변

0

당신이 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 이벤트를 발생시키는 런타임