我正在使用 Messenger 类在应用程序中广播消息。解决方案结构:
UserControlProject
- ucContainer
- ucContainerViewModel
- ucLogin
- app.xaml
ExeProject
- MainWindow
- app.xaml
ucContainer 在 MainWindow 中使用。在 MainWindow 构造函数中:
Messenger.Default.Register<LoginSession>(this, OnLoggedIn);
在 ucContainerViewModel 构造函数中:
Messenger.Default.Register<LoginSession>(this, OnLoggedIn);
在后面的ucLogin代码中:
Messenger.Default.Send<LoginSession>(new LoginSession() { UserName = txtUserName.Text, LoggedInAt = DateTime.Now });
问题:在 MainWindow 中没有收到消息。为什么?从它正在工作的同一个程序集中......在 ucContainerViewModel 中成功接收到消息。
问题(与 Messenger 无关):两个项目中都存在 app.xaml。两者都包含该 <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
行。我还不清楚它是否需要?定位器应该在哪里定义为资源 - 在每个使用 mvvm light vm 概念的项目中还是仅在应用程序项目中?
(mvvmlight: 4.1.27, VS2013, ,NET4.5)