La validación usando IDataErrorInfo
(si eso es lo que está utilizando) ocurrirá en el objeto que está vinculado a la Vista.
por lo que si usted tiene
<TextBox Text="{Binding Name}" />
esto estará en el modelo de vista. Sin embargo, si expone el modelo como una propiedad en el modelo de vista, la validación se realizará en su modelo de datos.
<TextBox Text="{Binding Model.Name}" />
Con la primera opción, se puede enlazar a las propiedades de vista del modelo y la ruta al modelo de datos donde se contiene la validación real, a continuación, sólo implementar IDataErrorInfo
en el modelo de vista y la ruta de la validación al modelo
modelo de vista:
public string this[string propname]
{
get { return _model[propname]; }
}
Esto es útil sólo si en realidad se configuran las propiedades necesarias en el modelo para la validación de trabajar
modelo de vista:
public string SomeProperty
{
get { reutrn _model.SomeProperty; }
set {
_model.OtherProperty = value;
RaisePropertyChanged("SomeProperty");
}
}
Sin embargo, yo prefiero la segunda opción de unión becasuse el problema con esto es que no es muy seco, por lo que casi siempre voy a exponer a la DataModel como una propiedad en el modelo de vista (ya que es responsable de los datos) y dejar ViewModel administrando el modelo para la vista, que es más acerca de cómo la interfaz de usuario interactúa con los datos.
En escenarios muy complejos, puede ser mejor separar la validación del modelo y el modelo de vista y tener tanto el modelo de vista como el modelo de datos consumiéndolo.