从另一个 ViewModel 发送时未收到 MVVM 消息

MVVM message not received when sending from another ViewModel

我创建了一个包含一些测验问题的详细信息页面。我需要将问题列表发送到 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);
    }

MVVM message not received when sending from another ViewModel

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);