Mercurial > silverbladetech
view SilverlightValidation/SilverlightValidation.PL/ViewModels/ViewModelBase.cs @ 96:188f8b366e87
Unit test project correctly setup as normal class library DLL.
author | stevenhollidge <stevenhollidge@hotmail.com> |
---|---|
date | Sat, 05 May 2012 13:29:56 +0100 |
parents | SilverlightValidation/SilverlightValidation/ViewModels/ViewModelBase.cs@241e2f22ed3c |
children |
line wrap: on
line source
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Linq; namespace SilverlightValidation.ViewModels { public class ViewModelBase : INotifyPropertyChanged, INotifyDataErrorInfo { #region INotifyPropertyChanged method plus event public event PropertyChangedEventHandler PropertyChanged = delegate { }; protected void RaisePropertyChanged(string propertyName) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } #endregion #region INotifyDataErrorInfo methods and helpers private readonly Dictionary<string, List<string>> _errors = new Dictionary<string, List<string>>(); public void SetError(string propertyName, string errorMessage) { if (!_errors.ContainsKey(propertyName)) _errors.Add(propertyName, new List<string> { errorMessage }); RaiseErrorsChanged(propertyName); } protected void ClearError(string propertyName) { if (_errors.ContainsKey(propertyName)) { _errors.Remove(propertyName); RaiseErrorsChanged(propertyName); } } protected void ClearAllErrors() { var errors = _errors.Select(error => error.Key).ToList(); foreach (var propertyName in errors) ClearError(propertyName); } public void RaiseErrorsChanged(string propertyName) { ErrorsChanged(this, new DataErrorsChangedEventArgs(propertyName)); } public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged = delegate { }; public IEnumerable GetErrors(string propertyName) { if (propertyName == null) return null; return _errors.ContainsKey(propertyName) ? _errors[propertyName] : null; } public bool HasErrors { get { return _errors.Count > 0; } } #endregion } }