Hierarquia MVVM e View / ViewModel

Eu estou trabalhando em fazer meu primeiro jogo usando C # e XAML para Windows 8. Eu ainda estou aprendendo os principais conceitos e melhores práticas, e MVVM tem sido um obstáculo. Vou tentar fazer a pergunta em duas partes.

fundo

O jogo que estou fazendo é o Sudoku. Sudoku tem uma placa que contém uma grade 9x9 de telhas. Eu tenho três modelos -Game, BoardeTile. Quando umGame é criado, cria automaticamente umBoarde quando oBoard é criado, cria 81 (9x9)Tiles.

1. Com uma hierarquia de visões, como os modelos de vista correspondentes são criados?

Para corresponder à hierarquia de modelos, gostaria de ter uma hierarquia de visualizações (GameView contém umBoardView que contém 81TileViews). No XAML, é muito fácil criar essa hierarquia de visualizações com controles de usuário, mas não entendo como os modelos de visualização são criados.

Nos exemplos que vi, o contexto de dados de um controle de usuário é geralmente definido no modelo de exibição (usando oViewModelLocator como uma fonte) que cria uma nova instância do modelo de visualização. Isso parece funcionar bem se você tiver uma visão simples, mas também parece que fica confuso quando você tem uma hierarquia. OGameView criar umaGameViewModel e deixar isso para o seuBoardView criança para criar umBoardViewModel? Se sim, como é que oGameViewModel comunicar com oBoardViewModel? Pode oBoardViewModel comunicar de volta a hierarquia para oGameViewModel?

2. Como um modelo de visão obtém dados de modelo?

No iOS, eu começaria usando um serviço para buscar umGame modelo pré-preenchido com dados. Eu criaria então umGameViewController ver controlador (que foi encarregado de criar a visão) e passar oGame para isso. No MVVM, vejo o valor em ter uma visão responsável por criar seu próprio modelo de visão (idealmente usando umViewModelLocator), mas não entendo como esse modelo de visão obtém o modelo.

Em todos os exemplos que encontrei on-line, o modelo de exibição usa algum serviço para buscar seus próprios dados. Mas eu não encontrei nenhum exemplo que aceita params ou parâmetros de construtores transmitidos de um nível mais alto de navegação. Como isso é feito?

Eu não quero usar um recurso de aplicativo ou algum outro tipo de método de armazenamento singleton para o meu modelo porque, não que eu faça, mas e se eu quisesse exibir vários quebra-cabeças na tela de uma só vez? CadaGameView deve conter seu próprioGame.

Não só oGameViewModel precisa de uma referência para oGame modelo, mas oBoardViewModel que foi criado de alguma forma (ver pergunta 1) precisa de uma referência aoBoard modelo que pertence aoGame modelo. O mesmo vale para todos osTiles. Como todas essas informações são transmitidas pela cadeia? Posso fazer tanto trabalho pesado inteiramente dentro do XAML, ou terei que fazer algum tipo de ligação ou outra inicialização no código?

Ufa!

Agradeço qualquer conselho que você possa dar, mesmo que não seja uma resposta completa. Também gostaria de encontrar alguns exemplos de projetos MVVM que compartilham desafios semelhantes aos meus. Obrigado uma tonelada!

questionAnswers(1)

yourAnswerToTheQuestion