有没有一种方法可以在打开它的相应窗口时识别由 prism 的 ViewModelLocator 创建的 ChildViewModel 实例?
我想触发 ChildViewModel 应该加载它的数据,基于来自 MasterViewModel 的参数。
在代码中,inMasterViewModel
有一个ICommand
in a,负责通过发布事件请求打开一个新的子窗口,并且有一个对应的订阅者。
public ICommand OpenNewChildWindow()
{
Publish(new OpenNewChildWindowPubSubEvent());
// Maybe I can publish a new PubSubEvent here
// but how can I target just the recently created ChildViewModel?
}
请注意,他们MasterViewModel
对 UI 实现一无所知。
订阅者在自定义上调用ShowWindow
方法,该方法WindowManager
基本上解析了与传入的 ViewModel 对应的视图(在本例中为窗口)。
public void ShowWindow(Type viewModelType)
{
Type view = ResolveView(viewModelType);
Window w = (Window)Activator.CreateInstance(view);
w.Show();
}
适当的窗口的 xaml
ViewModelLocator.AutoWireViewModel="True"