我有一个包含命令的视图模型,我想在shell的MainRegion(一个制表符控件)中添加一个新视图。
似乎我需要使用视图注入而不是发现,这很好。
即。来自棱镜文档
IRegionManager regionManager = ...;
IRegion mainRegion = regionManager.Regions["MainRegion"];
NewView view = this.container.Resolve<NewView>();
mainRegion.Add(view);
如何以及在何处获取视图模型中CompositionContainer的引用以解析NewView?
感谢。
答案 0 :(得分:4)
默认MEF容器通过IServiceLocator导出自身。您可以在视图模型中导入服务定位器和区域管理器:
[Import]
private IRegionManager _regionManager;
[Import]
private IServiceLocator _serviceLocator;
然后将其用于视图注入:
public void ShowSomeView()
{
IRegion region = _regionManager.Regions["Main"];
var view = _serviceLocator.GetInstance(typeof(SomeView));
region.Add(view, "SomeView");
region.Activate(view);
}
答案 1 :(得分:-1)
此question实际上与您的相同。