Digamos que tengo un programa que tiene que representar algunos datos en dos formas diferentes de . Si quiero lograr esto teniendo dos ViewModels diferentes, parece que ambos deberían compartir la misma instancia del objeto Model. Entonces ¿cómo se logra esto generalmente en MVVM con WPF?¿Cómo se suele compartir un Modelo entre los objetos de ViewModel?
Una forma que se me ocurre es que los constructores ViewModel podrían dar un instancia del modelo adecuado y todo el cableado podría hacerse en un manejador para el evento Application.Startup. No recuerdo haber visto esto en ninguno de los ejemplos que he visto hasta ahora, pero es posible que me haya perdido.
Hasta ahora parece que la mayoría de las veces, los ejemplos solo muestran las ViewModels creación de instancias de las clases del modelo en sí, lo que podría funcionar en algunos casos pero no parece ser una buena solución para mi situación, ya cada ViewModel crearía sus propias instancias de clases de modelo. También parece que así eliminaría la posibilidad de reemplazar el modelo con un diferente, que podría desearse, como en el caso de las pruebas unitarias. Estoy supongo que un marco de inyección de dependencia o un contenedor IoC eliminaría ese problema? Solo he usado inyección de dependencia manual hasta ahora.
En otro ejemplo, parecía que la vista creada objetos del modelo en sí y les pasó a los ViewModels, que no parece ser una gran idea tampoco, ya que la vista no debe saber nada sobre el Modelo ?
Algunos ejemplos ni siquiera parecen tener clases de modelo, solo vistas y modelos de vista.
¿Hay formas mejores que no he mencionado?
Además, ¿debería usar un marco de inyección de dependencias o un contenedor IoC? Como mencioné, realmente no he usado uno antes y pensé que podría ser excesivo para el tamaño de los programas en los que estoy trabajando en este momento. Al no haber examinado realmente , puedo estar equivocado.
Bien, pero ¿cómo se hace esto generalmente? ¿Qué clase generalmente crea la instancia del objeto Model y lo pasa a los objetos apropiados de ViewModel? Eso es lo principal de lo que estoy confundido en este momento. – foven