WinRT Caliburn.Microを使用して Windows ストア アプリ ゲームを開発しており、ナビゲーション フレームワークに依存しています。
ゲームのセットアップ (プレイヤーの定義) と実際のゲームのビュー モデルがあります。セットアップからゲームに移動するとき、プレイヤーのコレクションをゲーム ビュー モデルに渡したいと思います。これどうやってするの?
概略的には、私のビュー モデルは現在次のようになっています。
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
理想的には、コンストラクター内から呼び出したいのですが、私がGameViewModel
知る限り、SetupGameViewModel.Players
コレクションをGameViewModel
コンストラクターに渡すことはできません。
(INavigationService.NavigateToViewModel<T>
拡張) メソッドはオプションで[object] parameter
引数を取りますが、このパラメーターは移動先のビュー モデル コンストラクターに到達していないようです。また、この段階ではメソッドが初期化されていないため、GameViewModel.InitializeScoreBoard
メソッドからメソッドを明示的に呼び出す方法もわかりません。SetupGameViewModel.StartGame
GameViewModel