MVVM Light Messenger只是偶尔使用

时间:2016-05-17 11:53:28

标签: c# mvvm windows-runtime mvvm-light uwp

我面临以下问题。 我正在使用SplitView实现汉堡菜单。在SplitView窗格中,我使用UserControl和View Model来支持它(让我们称之为SplitViewUserControlVM)。

从这个SplitViewUserControlVM中,我将消息发送到应用程序中的其他VM。在大多数情况下,这很好。但是,有一个VM并不总是接收消息(我们称之为ProblemVM)。我没有找到一个关于它何时发生的模式,以及何时它似乎或多或少随机。

以下是注册Messenger并发送消息的代码。

在ProblemVM构造函数中

 MessengerInstance.Register<bool>(this, "LoginStatusChanged", (b) =>
        {
            navigationService.NavigateTo("MainPage");
        });

在SplitViewUserControlVM的方法

  //Notify other view models of changes in login status
  MessengerInstance.Send<bool>(false, "LoginStatusChanged");

 //Notify other view models of changes in login status
 MessengerInstance.Send<bool>(true, "LoginStatusChanged");

我使用断点来检查在发送消息之前是否发生了注册,而且一切看起来都很好。有人知道为什么不总是收到这条消息吗?

如果有帮助的话。在ProblemVM中,我还使用messenger在某些情况下与关联的View进行通信。注册发生在视图中的OnNavigatedTo方法中。这种情况也可以。

编辑:我刚才注意到将注册中的lambda更改为私有方法似乎解决了这个问题。我在这个问题MvvmLight message not firing when using local/anonymous action中找到了这个。但是没有解释原因。

0 个答案:

没有答案