繁体   English   中英

MVVMLight Messenger消息未收到

[英]MVVMLight Messenger message not being received

我有一个主视图模型,该视图模型保存WPF应用程序的主窗口,并基于当前viewmodel对象在框架中切换视图。 要在视图模型之间切换,我有一个非主要视图模型的List

private IPageViewModel currentPageViewModel;
private List<IPageViewModel> pageViewModels;

//Add pages
PageViewModels.Add(new FirstViewModel(dataService, storageService));
PageViewModels.Add(new SecondViewModel(dataService, storageService));
PageViewModels.Add(new ThirdViewModel(dataService, storageService));

//Set initial page
CurrentPageViewModel = PageViewModels[0];

第一个“当前”视图模型对象是您第一次上拉程序时要加载的对象。 我通过发送邮件FirstViewModel和接收SecondViewModel 问题是,直到我至少对SecondViewModel一次更改,它才会收到消息。

似乎很明显的问题是, SecondViewModel还没有被实例化以接收消息,但是我不确定这到底是怎么回事。

奖励信息和问题...每当我更改视图/视图模型时,它都会生成另一个页面...

<Frame x:Name="DisplayAreaFrame" Content="{Binding CurrentPageViewModel}" />

这是在MainWindow.xaml中更改视图的位置。虽然它似乎并没有直接更改。 相反,它添加了一个...页面(?),您可以从中来回翻转。 导航按钮 只有在第二或第三视图模型中加载后,这些按钮才会出现。

无论如何,我现在对想法一无所知,所以任何想法都可能是有益的灵感! 提前致谢。

编辑:在SecondViewModel注册下面添加

在构造器中注册SecondViewModel

Messenger.Default.Register<String>(this, id => {handleSelectedMessage(id);});

进一步挖掘后,将SecondViewModel实例化为TWICE。 这使我意识到我原来的ViewModelLocator在上述代码之外创建了一个新实例。 ViewModelLocator更改为指向MainViewModel的实例。 :)

尽管没有人正式提供帮助,但我要感谢SO社区的间接帮助! :d

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM