using GalaSoft.MvvmLight; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; namespace GroupLine.App.ModelDto { public class ValidateModelBase : ObservableObject, IDataErrorInfo { public ValidateModelBase() { } #region 属性 /// /// 表当验证错误集合 /// public Dictionary dataErrors = new Dictionary(); /// /// 是否验证通过 /// public Boolean IsValidated { get { if (dataErrors != null && dataErrors.Count > 0) { return false; } return true; } } #endregion public string this[string columnName] { get { ValidationContext vc = new ValidationContext(this, null, null); vc.MemberName = columnName; var res = new List(); var result = Validator.TryValidateProperty(this.GetType().GetProperty(columnName).GetValue(this, null), vc, res); if (res.Count > 0) { String errorInfo = string.Join(Environment.NewLine, res.Select(r => r.ErrorMessage).ToArray()); AddDic(dataErrors, columnName, errorInfo); return errorInfo; } RemoveDic(dataErrors, columnName); return null; } } public string Error { get { return null; } } #region 附属方法 /// /// 移除字典 /// /// /// private void RemoveDic(Dictionary dics, String dicKey) { dics.Remove(dicKey); } /// /// 添加字典 /// /// /// private void AddDic(Dictionary dics, String dicKey, string dicValue) { if (!dics.ContainsKey(dicKey)) dics.Add(dicKey, dicValue); } #endregion } }