diff options
Diffstat (limited to 'Juick/ViewModels/Validation/DataViewModelBase.cs')
-rw-r--r-- | Juick/ViewModels/Validation/DataViewModelBase.cs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/Juick/ViewModels/Validation/DataViewModelBase.cs b/Juick/ViewModels/Validation/DataViewModelBase.cs new file mode 100644 index 0000000..dcbf34b --- /dev/null +++ b/Juick/ViewModels/Validation/DataViewModelBase.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; + +namespace Juick.ViewModels.Validation +{ + public class DataViewModelBase : ViewModelBase, IDataErrorInfo + { + + private readonly Dictionary<String, List<String>> _errors = + new Dictionary<string, List<string>>(); + + // Adds the specified error to the errors collection if it is not already + // present, inserting it in the first position if isWarning is false. + public void AddError(string propertyName, string error, bool isWarning) + { + if (!_errors.ContainsKey(propertyName)) + _errors[propertyName] = new List<string>(); + + if (_errors[propertyName].Contains(error)) return; + if (isWarning) _errors[propertyName].Add(error); + else _errors[propertyName].Insert(0, error); + } + + // Removes the specified error from the errors collection if it is present. + public void RemoveError(string propertyName, string error) + { + if (!_errors.ContainsKey(propertyName) || !_errors[propertyName].Contains(error)) return; + _errors[propertyName].Remove(error); + if (_errors[propertyName].Count == 0) _errors.Remove(propertyName); + } + + public string Error { get { throw new NotImplementedException(); } } + + public string this[string columnName] + { + get + { + return (!_errors.ContainsKey(columnName) ? null : + String.Join(Environment.NewLine, _errors[columnName])); + } + } + } +} |