我创建了一个包含一些测验问题的详细页面。我需要将问题列表发送到ViewModel。接收ViewModel中的数据始终为空。调试器甚至没有进入'ReceiveMessage'方法。这是我的发送部分:
Frame rootFrame = Window.Current.Content as Frame;
Messenger.Default.Send<List<QuizQuestion>>(this.Questions);
rootFrame.Navigate(typeof(QuestionOverviewPage));
这是我的接收视图模型:
public QuestionOverviewViewModel(IMessageDialogService dialogService, IRoundRepository rounRepository)
{
_dialogService = dialogService;
_rounRepository = rounRepository;
_quizQuestionsViewModels = new List<QuestionViewModel>();
Messenger.Default.Register<List<QuizQuestion>>
(
this,ReceiveMessage
);
}
private void ReceiveMessage(List<QuizQuestion> action)
{
Console.WriteLine(action);
}
从另一个ViewModel发送时未收到MVVM消息
Messenger.Default.Register
应该在发送之前被调用,此步骤会将订户传递到子列表,发送客户端将找到订户实例,然后使用参数调用操作方法。
[我发现您将Messenger.Default.Register
放在QuestionOverviewViewModel中,并且在rootFrame.Navigate
之前调用了Send方法,因此您可以尝试在rootFrame.Navigate
之后调用send方法。
Frame rootFrame = Window.Current.Content as Frame;
rootFrame.Navigate(typeof(QuestionOverviewPage));
Messenger.Default.Send<List<QuizQuestion>>(this.Questions);