public virtual bool Validation() { // 验证错误时,必须先要清空属性异常信息。 // 因为,WPF 异常模板会屏蔽相同的错误信息。导致相同的错误信息,仅显示一次 ErrorDictionary.Clear(); // 属性验证 var result = true; var properties = GetType().GetProperties(); foreach (var property in properties) { var validationContext = new ValidationContext(this); var validationResults = new List <ValidationResult>(); validationContext.MemberName = property.Name; var value = property.GetValue(this); if (!Validator.TryValidateProperty(value, validationContext, validationResults)) { result = false; // 仅显示第一个错误 var errorCollection = validationResults.Select(p => p.ErrorMessage).ToList(); ErrorDictionary[property.Name] = new List <string> { errorCollection[0] }; } OnErrorsChanged(property.Name); } return(result); }