2017-02-01 7 views
-2

私はフィールドEmailを持っていますが、ユーザが入力している間にRegEx errorsと表示したいと思っていますが、オプションのフィールドなので、ユーザがフォームを送信すると、エラー、およびnull値を送信する必要があります。INofityDataErrorInfoによって生成されたエラーをクリアする方法

私はViewModelINofityDataErrorInfoインターフェイスを実装しました。あなたは正しくINotifyDataErrorInfoインタフェースを実装している場合

答えて

0

あなただけ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イベントを発生させます。

関連する問題