[英]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.