最近、MVVMライトを使用してWPFの操作を開始しましたが、次のようなものがあります(単純なシナリオ)。
MainWindowには、要素のリストボックスが含まれています。
1つを選択してボタンをクリックすると、次のコマンドを実行します。
ReservoirViewerCommand.Execute(null);
viewmodelクラスで、コマンドをインスタンス化し、選択したオブジェクトを含むメッセージを送信します。
ReservoirViewerCommand = new RelayCommand(OpenReservoir); private void OpenReservoir() { Messenger.Default.Send(new LaunchShowReservoirMessage(){Reservoir=SelectedReservoir}); }
どこ:
class LaunchShowReservoirMessage:MessageBase { public Reservoir Reservoir { get; set; } }
メインビューはメッセージを登録し、新しい子ウィンドウを開きます。
private void RegisterMessages() { Messenger.Default.Register<LaunchShowReservoirMessage>(this,OnLaunchShowReservoir); } public void OnLaunchShowReservoir(LaunchShowReservoirMessage msg) { var showReservoir = new ReservoirViewerView(); showReservoir.Show(); }
必要なのは、新しいViewModel(ReservoirViewerViewModel)がメッセージを介して渡されたオブジェクトを何らかの方法で取得できるため、このオブジェクトの詳細を子ウィンドウに表示できることです。
ステップバイステップのデバッグを行いましたが、ViewModelコンストラクターに到達することはないようです。