我正在使用Messenger类在应用程序中广播消息。 解决方案结构:MVVMLight - Messenger:从用户控制项目发送消息到exe项目不起作用
UserControlProject
- 使用的App.xaml
的ucContainer - ucContainer
- ucContainerViewModel
- ucLogin
- App.xaml中
ExeProject
- 主窗口
在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 });
问题:在主窗口的消息没有收到。为什么?从相同的程序集中,它正在工作...在ucContainerViewModel中,消息已成功接收。
问题(与Messenger无关):app.xaml存在于两个项目中。两者都包含<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
系列。这对我来说还不完全清楚,它是需要的吗?定位器应该在哪里定义为资源定义 - 在每个使用mvvm light vm概念的项目中,还是仅在应用程序项目中?
(mvvmlight:4.1.27,VS2013,NET4.5)
对于我来说消息正在工作。你能解释一下关于视图和视图模型的更多细节吗? – Artru 2013-05-02 15:40:06