Pregunta

Como soy más excavaciones en MVVM y MVVM luz I reconocido, que no hay ninguna clase de base-MVVM luz proporcionada por los modelos.

Sin embargo, desde mi entendimiento, la mensajería y notificaciones que crían también podría suceder en un modelo. Por lo menos en la comunicación entre los modelos que iba a encontrar que la mensajería podría ser muy útil.

Así que decidí sacar mi modelo de ViewModelBase, a pesar de que algunas de las propiedades (como los que en tiempo de diseño) no va a utilizar.

Pero cuanto más estoy mirando esto, más pienso que he perdido algo. ¿Se considera "mala práctica" para derivar mis modelos de ViewModelBase?

Y es bien usar mensajería para la comunicación Modelo?

¿Fue útil?

Solución

Derivar las clases de vista-modelo de lo que quiera ... a MVVM luz del VieWModelBase para proporcionar una implementación de ICleanUp - lo cual es bueno para la gestión del ciclo de vida de los objetos modelo de vista. Mi elección ha sido la de poner en práctica todos los andamios para las notificaciones de cambio de propiedad de una clase base, a continuación, se derivan de la de las clases del modelo. Acerca de las sugerencias solamente fuertes He respecto a las clases del modelo son:

  1. Una vez que el tamaño no sirve para todos . ¿Cómo se almacenan los datos pueden ser diferentes de la forma de interactuar con los datos, y los objetos ViewModel debe estar orientada hacia el apoyo de la interacción, no de almacenamiento, y si es necesario para interactuar con los mismos datos (modelo) de dos maneras muy diferentes, a continuación, diseñar dos ViewModels diferentes para apoyar estas diferentes interacciones.
  2. hace uso de los atributos (al estilo de System.ComponentModel) para anotar los modelos. Usted puede obtener una gran cantidad de trabajo de validación hecho de esta manera -. Y validación retroalimentación es responsabilidad de la capa de presentación (Ver + modelo de vista), no el dominio del problema (es decir, el modelo)

Realmente buenas clases ViewModel son también lo suficientemente generalmente sin estado que pueden ser reciclados / reutilizados dentro de una sola interacción del usuario, de tal manera que grandes listas de datos se pueden virtualizar (WPF admite la virtualización) para guardar RAM.

Recuerde DRY (Do not Repeat Yourself), KISS (Keep It Simple, Stupid!) Y YAGNI (No es que a necesitar) - son los principios que debe tener en cuenta encima cualquier principios de diseño académicas. He perdido litereally semanas en una aplicación WPF implementación de patrones académicamente perfectos MVC / MVVM, sólo para encontrar que restó forman la comprensibilidad general de la solución final. Así que ... que sea sencillo! :)

Otros consejos

Me tomaría un vistazo a la EventAggregator en el biblioteca de aplicaciones compuestas . La respuesta en este post tiene una buena descripción de la misma. de Jeremy Miller publicar entra en un poco más de detalle.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top