我最近开始使用 MVVM light 使用 WPF,我有以下(简单场景)。
MainWindow 包含一个元素列表框。
选择一个并单击按钮时,我发出命令:
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 构造函数。