Hierarchia MVVM i View / ViewModel

Pracuję nad stworzeniem mojej pierwszej gry przy użyciu C # i XAML dla Windows 8. Nadal uczę się podstawowych pojęć i najlepszych praktyk, a MVVM jest przeszkodą. Spróbuję zadać pytanie w dwóch częściach.

tło

Gra, którą tworzę to Sudoku. Sudoku ma planszę zawierającą siatkę płytek 9x9. Mam trzy modele -Game, Board, iTile. KiedyGame jest tworzony, automatycznie tworzyBoardi kiedyBoard jest tworzony, tworzy 81 (9x9)Tiles.

1. Z hierarchią widoków, w jaki sposób tworzone są odpowiednie modele widoków?

Aby dopasować hierarchię modeli, chciałbym mieć hierarchię widoków (GameView zawiera aBoardView który zawiera 81TileViews). W XAML tworzenie hierarchii widoków za pomocą elementów sterujących użytkownika jest bardzo łatwe, ale nie rozumiem, jak tworzone są modele widoków.

W przykładach, które widziałem, kontekst danych formantu użytkownika jest często ustawiony na model widoku (za pomocąViewModelLocator jako źródło), które tworzy nową instancję modelu widoku. Wydaje się, że działa to dobrze, jeśli masz płaski widok, ale wydaje się, że staje się bałagan, gdy masz hierarchię. Czy toGameView StwórzGameViewModel i zostaw toBoardView dziecko, aby stworzyćBoardViewModel? Jeśli tak, to jakGameViewModel komunikować się zBoardViewModel? Czy możeBoardViewModel komunikować się z powrotem w hierarchii doGameViewModel?

2. W jaki sposób model widoku pobiera dane modelu?

W systemie iOS zacznę od użycia usługi do pobraniaGame model, który został wstępnie wypełniony danymi. Wtedy stworzyłemGameViewController widok kontrolera (który był odpowiedzialny za tworzenie widoku) i przekazaćGame do tego. W MVVM widzę, jak ważne jest, aby być odpowiedzialnym za tworzenie własnego modelu widoku (najlepiej przy użyciuViewModelLocator), ale nie rozumiem, jak ten model widoku uzyskuje model.

We wszystkich przykładach, które znalazłem w Internecie, model widoku wykorzystuje niektóre usługi do pobierania własnych danych. Ale nie natknąłem się na żaden przykład, który akceptuje params konstruktora lub parametry przekazywane z wyższego poziomu nawigacji. Jak to się robi?

Nie chcę używać zasobu aplikacji ani innej metody przechowywania singletonu w moim modelu, ponieważ nie to robię, ale co jeśli chciałbym wyświetlić wiele łamigłówek na ekranie naraz? KażdyGameView powinien zawierać własneGame.

Nie tylkoGameViewModel potrzebuję odniesienia doGame model, aleBoardViewModel który został w jakiś sposób utworzony (patrz pytanie 1) potrzebuje odniesienia doBoard model należący doGame Model. To samo dotyczy wszystkichTiles. Jak wszystkie te informacje są przekazywane w łańcuchu? Czy mogę wykonać tak dużo ciężkiego podnoszenia w całości w XAML, czy będę musiał wykonać jakiś rodzaj powiązania lub innej inicjalizacji w kodzie?

Uff!

Doceniam każdą radę, której możesz udzielić, nawet jeśli nie jest to pełna odpowiedź. Chciałbym również znaleźć przykłady projektów MVVM, które dzielą podobne wyzwania z moimi. Dzięki tona!

questionAnswers(1)

yourAnswerToTheQuestion