我面临以下问题。 我正在使用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
方法中。这种情况也可以。