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

问题描述 投票:1回答:1

我创建了一个包含一些测验问题的详细页面。我需要将问题列表发送到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);
    }
c# uwp mvvm-light
1个回答
1
投票

从另一个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);
© www.soinside.com 2019 - 2024. All rights reserved.