MVVM и иерархия View / ViewModel

я работаю над созданием моей первой игры с использованием C # и XAML для Windows 8. ЯЯ все еще изучаю основные концепции и лучшие практики, и MVVM стал препятствием. Я'Я попытаюсь задать вопрос в двух частях.

Фон

Игра яЯ делаю это судоку. У Судоку есть доска с 9x9 сеткой плиток. У меня есть три модели -,GameBoard, а такжеTile, КогдаGame создается, он автоматически создаетBoardи когдаBoard создан, он создает 81 (9x9).Tiles

1. Как создаются соответствующие модели представлений с иерархией представлений?

Чтобы соответствовать иерархии моделей, я хотел бы иметь иерархию представлений (GameView содержитBoardView который содержит 81TileViews). В XAML этоДовольно легко создать эту иерархию представлений с помощью пользовательских элементов управления, но я неНе понимаю, как создаются модели представлений.

В примерах яВидно, что контекст данных пользовательского элемента управления часто устанавливается на модель представления (используяViewModelLocator в качестве источника), который создает свежий экземпляр модели представления. Кажется, это хорошо работает, если у вас плоский вид, но также кажется, что это становится грязным, когда у вас есть иерархия. ЛиGameView создатьGameViewModel и оставь это на усмотрениеBoardView ребенок, чтобы создатьBoardViewModel? Если да, то какGameViewModel общаться сBoardViewModel? Может лиBoardViewModel связаться обратно по иерархии к?GameViewModel

2. Как модель представления получает данные модели?

В iOS я бы начал с использования службы для полученияGame модель, которая была предварительно заполнена данными. Я бы тогда создалGameViewController контроллер представления (который отвечал за создание представления) и передатьGame к этому. В MVVM я вижу ценность того, чтобы представление отвечало за создание своей собственной модели представления (в идеале с использованиемViewModelLocator), но я неЯ не понимаю, как эта модель представления получает модель.

Во всех примерах янайденная в сети, модель представления использует некоторый сервис для извлечения собственных данных. Но у меня нетНе встречайте ни одного примера, который принимает параметры конструктора или параметры, переданные с более высокого уровня навигации. Как это сделать?

Я неЯ не хочу использовать ресурс приложения или какой-либо другой метод хранения синглтонов для моей модели, потому что не это я делаю, а что, если я хочу отображать на экране несколько головоломок одновременно? каждыйGameView должен содержать свой собственный.Game

Мало того, чтоGameViewModel нужна ссылка наGame модель, ноBoardViewModel который был каким-то образом создан (см. вопрос 1), нуждается в ссылке наBoard модель, которая принадлежитGame модель. То же самое касается всехTiles, Как вся эта информация передается по цепочке? Могу ли я сделать эту тяжелую работу полностью внутри XAML, или мне придется выполнить какое-то связывание или другую инициализацию в коде?

Уф!

Я ценю любой совет, который вы можете дать, даже если онне полный ответ. Я'Я также хотел бы найти какие-либо примеры проектов MVVM, которые разделяют мои проблемы. Благодаря тонну!

Ответы на вопрос(1)

Ваш ответ на вопрос