Por lo que desarrollo la aplicación WPF con MVVM, nunca expongo el modelo a través de la propiedad pública de viewmodel. De todos modos, después de venir al mundo de Silverlight y WCF RIA, encontré un nuevo método para lograr la validación de datos, dicho por el atributo Requerido. (hay otros atributos también)¿Por qué no es bueno exponer el Modelo a través de ViewModel en Silverlight MVVM?
Esta vez, en lugar de crear una lógica de validación dentro del modelo de vista, puedo hacer casi la lógica de validación dentro del modelo mismo.
public class TestUserPM {
[Key]
public int ID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string Email { get; set; }
}
Después de eso, todo lo que necesito en el modelo de vista es exponer la propiedad pública del tipo de TestUserPM y dejó Ver uniéndose directamente al modelo.
Creo que esta no es una solución elegante, pero puede funcionar y no es necesario crear una validación tediosa dentro de la propiedad viewmodel.
¿Hay algún inconveniente de este método?
Actualización 1
simplemente me encontré con 1 abajo del lado, puede ser que tiene solución por ahí. Quiero vincular el Comando de Botón, por ejemplo, el botón Guardar en Comando en el Modelo de Vista, pero este botón se puede ejecutar solo si todas las informaciones son válidas. Desde mi experiencia con WPF MVVM, que tengo clase de ayuda, llamaré al OnCanExecuteChanged()
dentro de public string this[string columnName]
de IDataErrorInfo
.
¿Cómo puedo manejar este tipo de requisitos?
Hago lo mismo. ViewModel está aquí para exponer y adaptar el Modelo a la Vista. –
La idea de usar el modelo directamente viola la regla de encapsulación porque nadie debería hacer 'MyObject.Child.ChildChild.NChild.SomeProperty'. También es una vez más la separación entre el Modelo y la Vista, porque si cambias el Nombre de la propiedad en tu Modelo, tienes que hacerlo en tu Vista/'s – WiiMaxx