Ich entwickle ein Windows Store-Apps-Spiel mit WinRT Caliburn.Micro, und ich verlasse mich auf das Navigations-Framework.Wie Parameter mit WinRT Caliburn.Micro an navigierte Ansichtsmodell übergeben?
Ich habe Modelle für das Spiel Setup (definieren Spieler) und das eigentliche Spiel. Beim Navigieren vom Setup zum Spiel möchte ich die Sammlung von Spielern an das Spielansichtsmodell übergeben. Wie kann ich das machen?
Schematisch, meine Ansicht Modelle sehen zur Zeit wie folgt aus:
public class SetupGameViewModel : NavigationViewModelBase
{
public SetupGameViewModel(INavigationService ns) : base(ns) { }
public IObservableCollection<Player> Players { get; set; }
public void StartGame()
{
// This is as far as I've got...
base.NavigationService.NavigateToViewModel<GameViewModel>();
// How can I pass the Players collection from here to the GameViewModel?
}
}
public class GameViewModel : NavigationViewModelBase
{
public GameViewModel(INavigationService ns) : base(ns) { }
public ScoreBoardViewModel ScoreBoard { get; private set; }
public void InitializeScoreBoard(IEnumerable<Player> players)
{
ScoreBoard = new ScoreBoardViewModel(players);
}
}
Idealerweise würde ich InitializeScoreBoard
aus dem Konstruktor nennen möchte, aber soweit ich in der Lage gewesen, es zu sagen, ist nicht möglich, übergeben Sie die SetupGameViewModel.Players
Sammlung an den Konstruktor.
Die INavigationService.NavigateToViewModel<T>
(Erweiterung) -Methode nimmt optional ein [object] parameter
Argument, aber dieser Parameter scheint den Ansichtsmodellkonstruktor nicht zu erreichen, zu dem navigiert wird. Und ich kann nicht herausfinden, wie man die GameViewModel.InitializeScoreBoard
Methode von der SetupGameViewModel.StartGame
Methode auch explizit nennt, da die in diesem Stadium nicht initialisiert worden ist.
Danke dafür, es hat mir viel Zeit gespart. – jimpanzer
In diesem Beitrag von Rob selbst erklärt er, dass es aufgrund des navigationsbasierten Systems in Windows Phone, das auf Uri basiert, die komplexe Deserialisierung nicht unterstützt. http://caliburnmicro.codeplex.com/discussions/267562 –