string IDataErrorInfo.this[string propertyName] { get { string error = string.Empty; var dpDescriptor = DependencyPropertyDescriptor.FromName(propertyName, this.GetType(), this.GetType()); if (dpDescriptor != null) { var results = new List <ValidationResult>(1); var result = Validator.TryValidateProperty( value: this.GetValue(dpDescriptor.DependencyProperty), validationContext: new ValidationContext(this) { MemberName = propertyName }, validationResults: results); if (!result) { var validationResult = results.First(); error = validationResult.ErrorMessage; if (ValidationErrors.Contains(propertyName)) { ValidationErrors[propertyName] = error; } else { ValidationErrors.Add(propertyName, error); } } else { if (ValidationErrors.Contains(propertyName)) { ValidationErrors.Remove(propertyName); } } } IsValid = ValidationErrors.Count > 0 ? false : true; return(error); } }