MVVM y View / ViewModel hierarchy

Estoy trabajando para hacer mi primer juego usando C # y XAML para Windows 8. Todavía estoy aprendiendo los conceptos básicos y las mejores prácticas, y MVVM ha sido un obstáculo. Intentaré hacer la pregunta en dos partes.

Fondo

El juego que estoy haciendo es Sudoku. Sudoku tiene una tabla que contiene una cuadrícula de baldosas de 9x9. Tengo tres modelos -Game, BoardyTile. Cuando unGame se crea, crea automáticamente unBoard, y cuando elBoard Se crea, crea 81 (9x9).Tiles.

1. Con una jerarquía de vistas, ¿cómo se crean los modelos de vista correspondientes?

Para coincidir con la jerarquía de modelos, me gustaría tener una jerarquía de vistas (GameView contiene unaBoardView que contiene 81TileViews). En XAML, es bastante fácil crear esta jerarquía de vistas con controles de usuario, pero no entiendo cómo se crean los modelos de vista.

En los ejemplos que he visto, el contexto de datos de un control de usuario a menudo se establece en el modelo de vista (usando laViewModelLocator como una fuente) que crea una nueva instancia del modelo de vista. Esto parece funcionar bien si tiene una vista plana, pero también parece que se ensucia cuando tiene una jerarquía. Hace elGameView crear unGameViewModel y dejarlo a suBoardView niño para crear unBoardViewModel? Si es así, ¿cómo funciona elGameViewModel comunicarse con elBoardViewModel? Puede elBoardViewModel comunicarse de nuevo la jerarquía a laGameViewModel?

2. ¿Cómo un modelo de vista obtiene datos del modelo?

En iOS, comenzaría usando un servicio para buscar unGame Modelo que fue pre-poblado con datos. Entonces crearía unGameViewController ver controlador (que estaba a cargo de crear la vista) y pasar elGame lo. En MVVM, veo el valor de tener una vista a cargo de crear su propio modelo de vista (idealmente usando unViewModelLocator), pero no entiendo cómo ese modelo de vista obtiene el modelo.

En todos los ejemplos que he encontrado en línea, el modelo de vista usa algún servicio para obtener sus propios datos. Pero no he encontrado ningún ejemplo que acepte parámetros de construcción o parámetros de nivel superior de navegación. ¿Cómo se hace esto?

No quiero usar un recurso de aplicación o algún otro tipo de método de almacenamiento de singleton para mi modelo porque, no es así, pero ¿y si quisiera mostrar varios rompecabezas en la pantalla a la vez? CadaGameView debe contener su propiaGame.

No solo elGameViewModel necesita una referencia a laGame modelo, pero elBoardViewModel que se creó de alguna manera (ver pregunta 1) necesita una referencia a laBoard modelo que pertenece a laGame modelo. Lo mismo ocurre con todos losTiles. ¿Cómo se pasa toda esta información por la cadena? ¿Puedo hacer este trabajo pesado por completo dentro de XAML, o tendré que hacer algún tipo de enlace u otra inicialización en el código?

¡Uf!

Agradezco cualquier consejo que pueda dar, incluso si no es una respuesta completa. También estoy ansioso por encontrar ejemplos de proyectos MVVM que compartan desafíos similares a los míos. ¡Gracias una tonelada!

Respuestas a la pregunta(1)

Su respuesta a la pregunta