Cómo validar objetos secundarios implementando IDataErrorInfo en la clase primaria

Estoy desarrollando una aplicación WPF usando la arquitectura MVVM. Soy un aficionado en WPF, así que tengan paciencia conmigo.

Tengo dos clases de modelos. La clase principal tiene un objeto de otra clase (secundaria) como su propiedad. (Me refiero a objetos anidados y no heredados)

Por ejemplo, considere el siguiente escenario.

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;}

}    

Quiero validar las propiedades de la entidad Empleado utilizando el Bloque de validación de la biblioteca empresarial.

Pude hacerlo implementando la interfaz IDataErroInfo en la clase de empleado como se muestra a continuación

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;
        }
    }
}

No quiero implementar IDataErroInfo para cada modelo secundario que creo.

¿Hay alguna forma de validar el objeto Empleado implementando IDataErrorInfo en la clase padre (Empresa)?

Y también hay algún desencadenante para iniciar la validación de objetos. Me gustaría validar los objetos solo cuando quiera y no todo el tiempo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta