コード例 #1
0
        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);
        }