Como validar objetos filho implementando IDataErrorInfo na classe pai
Estou desenvolvendo um aplicativo WPF usando a arquitetura MVVM. Eu sou um amador no WPF, então tenha paciência comigo ..
Eu tenho duas classes de modelo. A classe pai tem um objeto de outra classe (filho) como propriedade. (refiro-me a objetos aninhados e não a objetos herdados)
Por exemplo, considere o seguinte cenário.
public class Company
{
public string CompanyName {get; set;}
public Employee EmployeeObj {get; set;}
}
public class Employee
{
public string FirstName {get; set;}
public string LastName {get; set;}
}
Desejo validar as propriedades da entidade Employee usando o Enterprise Library Validation Block.
Consegui fazer isso implementando a interface IDataErroInfo na classe de funcionários, como mostrado abaixo
public class Employee : IDataErrorInfo
{
[NotNullValidator(MessageTemplate="First Name is mandatory"]
public string FirstName {get; set;}
[StringLengthValidator(0,20,MessageTemplate="Invalid")]
public string LastName {get; set;}
public string Error
{
get
{
StringBuilder error = new StringBuilder();
ValidationResults results = Validation.ValidateFromAttributes<Employee>(this);
foreach (ValidationResult result in results)
{
error.AppendLine(result.Message);
}
return error.ToString();
}
}
public string this[string propertyName]
{
get
{
ValidationResults results = Validation.ValidateFromAttributes<Employee>(this);
foreach (ValidationResult result in results)
{
if (result.Key == propertyName)
{
return result.Message;
}
}
return string.Empty;
}
}
}
Eu não quero implementar IDataErroInfo para cada modelo filho que eu criar.
Existe alguma maneira de validar o objeto Employee implementando IDataErrorInfo na classe pai (Empresa)?
E também existem gatilhos para iniciar a validação de objetos. Eu gostaria de validar os objetos apenas quando eu quiser e não o tempo todo.