Wpf MVVM灯光通讯器。注册表不工作

Wpf MVVM灯光通讯器。注册表不工作,wpf,mvvm-light,Wpf,Mvvm Light,在我的MainViewModel中,我只有打开不同页面的Relay命令。 这些命令是这样的 Messenger.Default.Send<int>(2015); ViewModel.ReportViewModel reportVM = new ReportViewModel(report); Views.ReportView pagReport = new ReportView() { DataContext = reportVM }; ApplicationHelper.N

在我的MainViewModel中,我只有打开不同页面的Relay命令。 这些命令是这样的

 Messenger.Default.Send<int>(2015);
 ViewModel.ReportViewModel reportVM = new ReportViewModel(report);
 Views.ReportView pagReport = new ReportView() { DataContext = reportVM };
 ApplicationHelper.NavigationService(pagReport);
Messenger.Default.Send(2015);
ViewModel.ReportViewModel reportVM=新的ReportViewModel(报告);
Views.ReportView pagReport=new ReportView(){DataContext=reportVM};
ApplicationHelper.NavigationService(pagReport);
在ReportViewModel中,我有

 public ReportViewModel(string report)
 {
   Messenger.Default.Register<int>(this, Doit);
   ShowReport(report);
 }

 private void Doit(int val)
 {
   int test = val;//code never touch this line
 }
公共报告视图模型(字符串报告) { Messenger.Default.Register(this,Doit); ShowReport(报告); } 私有无效Doit(int val) { int test=val;//代码永远不要触及此行 }
我做错了什么?

根据我上面的评论,在发送消息后,您正在实例化/更新reportVM。如果在发送消息之前没有ReportViewModel的实例,则该消息没有侦听器

//Instantiate first:
ViewModel.ReportViewModel reportVM = new ReportViewModel(report);
Views.ReportView pagReport = new ReportView() { DataContext = reportVM };
ApplicationHelper.NavigationService(pagReport);

//Send the message:
Messenger.Default.Send<int>(2015);
//首先实例化:
ViewModel.ReportViewModel reportVM=新的ReportViewModel(报告);
Views.ReportView pagReport=new ReportView(){DataContext=reportVM};
ApplicationHelper.NavigationService(pagReport);
//发送消息:
Messenger.Default.Send(2015);

Sanity check:您是否在Messenger.Default.Send上设置了断点?那条线被击中了吗?当然可以。我注意到,在发送消息之后,您正在实例化/更新reportVM。如果在发送消息之前没有ReportViewModel的实例,则该消息没有侦听器。谢谢!这就是问题所在。