public ModelValidator(params PropertyValidator[] propertyValidators)
{
if (propertyValidators == null) throw new ArgumentNullException(nameof(propertyValidators));
// Protect against mutations of the supplied array.
var validators = propertyValidators.ToList();
// This would be a lot cleaner with ReactiveUI but
// here we are.
foreach (var validator in validators)
{
validator.PropertyChanged += (s, e) =>
{
if (e.PropertyName != nameof(validator.ValidationResult)) return;
IsValid = validators.All(v => v.ValidationResult.IsValid);
};
}
}