如何在视图模型中使用Mef容器解析视图

时间:2011-03-28 12:16:10

标签: wpf mvvm prism mef

我有一个包含命令的视图模型,我想在shell的MainRegion(一个制表符控件)中添加一个新视图。

似乎我需要使用视图注入而不是发现,这很好。

即。来自棱镜文档

IRegionManager regionManager = ...;
IRegion mainRegion = regionManager.Regions["MainRegion"];
NewView view = this.container.Resolve<NewView>();
mainRegion.Add(view);

如何以及在何处获取视图模型中CompositionContainer的引用以解析NewView?

感谢。

2 个答案:

答案 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实际上与您的相同。