在我ViewmodelA
我想在ViewModelB
打开一个新的窗口,所以我用了信使类,但probleme是,我需要引用ViewModelB
的ViewModelA
内部,使得ViewModelB
能听消息。
这里是我的执行
在ViewModelA:
MVVM光使者的ViewModels
private void btnAddExecute()
{
// I need to instanciate ViewModelB otherwise it wont work/listen
ViewModelB vb= new ViewModelB();
Messenger.Default.Send(new NotificationMessage("ShowWindow"));
}
在ViewModelB
我听它的构造广播消息。
有无论如何去耦ViewmodelA
从ViewmodelB
?
你能解释为什么你需要引用'ViewModelB'吗?你期待一个结果或什么? – MrZander
我只想试验messenger类,并在视图模型之间发送数据 –
因为您在B的构造器中注册了消息处理器,并在那里处理它,所以您需要有一个'ViewModelB'实例在某处实际处理消息。通常情况下,该实例将作为应用程序的一部分在其他位置创建(例如,两个窗口试图相互通信)。 –