WinRT Caliburn.Microを使用してWindows Storeアプリケーションゲームを開発しており、ナビゲーションフレームワークに頼っています。WinRT Caliburn.Microを使用してナビゲートされたビューモデルにパラメータを渡す方法は?
私はゲーム設定(プレイヤーを定義する)と実際のゲームのビューモデルを持っています。セットアップからゲームにナビゲートするとき、私はプレイヤーのコレクションをゲームビューモデルに渡したいと思います。これどうやってするの?
を模式的に、私の見解モデルは、現在、次のようになります。
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);
}
}
理想的には、私はコンストラクタ内からInitializeScoreBoard
を呼び出すしたいと思いますが、私の知る限り、それを伝えることができたとすることはできませんSetupGameViewModel.Players
コレクションをコンストラクタに渡します。
INavigationService.NavigateToViewModel<T>
(オプション)メソッドは、オプションで[object] parameter
引数をとりますが、このパラメータは、ナビゲートされたビューモデルのコンストラクタには達していないようです。 はこの段階では初期化されていないため、GameViewModel.InitializeScoreBoard
メソッドをSetupGameViewModel.StartGame
メソッドから明示的に呼び出す方法もわかりません。
それをありがとう、それは私の時間の多くを保存しました。 – jimpanzer
Rob自身からのこの記事では、複雑なデシリアライゼーションをサポートしていないUriに基づいて動作する、Windows Phoneのナビゲーションベースのシステムのためだと説明しています。 http://caliburnmicro.codeplex.com/discussions/267562 –