MVVM Light Messenger。注册无效

时间:2015-07-30 11:40:13

标签: wpf mvvm-light

在我的MainViewModel中,我只有打开不同页面的RelayCommands。 Theese命令就像这样

 Messenger.Default.Send<int>(2015);
 ViewModel.ReportViewModel reportVM = new ReportViewModel(report);
 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
 }

我做错了什么?

1 个答案:

答案 0 :(得分:2)

根据我上面的评论,您在发送邮件后实例化/新建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);