using System; using System.Collections.Generic; using System.ComponentModel; namespace Juick.ViewModels.Validation { public class DataViewModelBase : ViewModelBase, IDataErrorInfo { private readonly Dictionary> _errors = new Dictionary>(); // 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(); 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])); } } } }