public ValidationError SetError(string propertyName, string errorMessage) { var error = Errors.FirstOrDefault(e => e.PropertyName == propertyName); if (error == null) { if (!string.IsNullOrEmpty(errorMessage)) { error = new ValidationError(propertyName, errorMessage); Errors.Add(error); } } else { if (string.IsNullOrEmpty(errorMessage) && string.IsNullOrEmpty(error.ErrorMessage)) { Errors.Remove(error); error = null; } else { //if (error.ErrorMessage == errorMessage) return error; error.ErrorMessage = errorMessage; } } if (string.IsNullOrWhiteSpace(error?.ErrorMessage)) { Errors.Remove(error); } ValidatableEntity?.NotifyErrorChanged(propertyName); if (string.IsNullOrWhiteSpace(error?.ErrorMessage)) { return(null); } return(error); }
public IEnumerable <ValidationError> Validate() { var errors = Entity.Validate(); var properties = errors.Select(e => e.PropertyName).Concat(Errors.Select(e => e.PropertyName)).Distinct().ToList(); Errors.Clear(); Errors.AddRange(errors); if (ValidatableEntity != null) { foreach (var item in properties) { ValidatableEntity.NotifyErrorChanged(item); } } return(Errors.ToList()); }