如何在MEF和WPF的棱镜中添加视图到项目控件

如何在MEF和WPF的棱镜中添加视图到项目控件

问题描述:

我有一个应用程序,到目前为止只有2个视图。视图1是一个列表,第二个是详细视图(一旦你在视图1中选择了一个项目。)如何在MEF和WPF的棱镜中添加视图到项目控件

我在我的Prism shell中设置了一个区域,并且可以加载我的模块。因为只有模块1加载最初,当我从1选择一个项目,然后我想导航到2(这将显示在我的项目控制(顺便说一下,这是一个选项卡控件)(0127)。问题我有,我要么a)两个视图最初显示在我的选项卡控制

b)如果我更改视图b的模块上的导出属性按需初始化,当我点击导航到视图b没有任何反应。

任何帮助将不胜感激。谢谢。

+0

我认为这与我一起使用视图发现而不是视图注入。认为我应该使用视图注入。只需要弄清楚如何让视图模型1调用容器来创建视图2.我想。 – obaylis 2011-03-28 07:32:20

我已经让所有的意见被发现,但是,鉴于initalisation我停用所有的观点接受一个我感兴趣的是解决此得到。当然,我正在寻找一种更好的方法:)

foreach (var view in RegionManager.Regions["RegionFoo"].Views) 
{ 
    if (view.GetType() == initialViewType) 
    { 
    RegionManager.Regions["RegionFoo"].Activate(view); 
    } 
    else 
    { 
    RegionManager.Regions["RegionFoo"].Deactivate(view); 
    } 
} 

我在该地区的注册视图注册后进行此操作。 initialViewType是您希望查找的视图的类型。这只是假设的一个单例。

+0

感谢您的回复。我改变了我的代码,在视图1的viewmodel中注入了新的视图2。现在的问题是,我需要通过我的容器创建新视图2 - 不知道如何在视图模型中获取容器上的处理程序。 regionManager.Regions [“MainRegion”]。Add(new Views.ReleaseView()); regionManager.RequestNavigate(“MainRegion”,new Uri(“ReleaseView”,UriKind.Relative));' – obaylis 2011-03-28 09:49:23

+0

结束从我的引导程序导出CompositionContainer,然后导入它以在视图模型中使用。再次感谢。 – obaylis 2011-03-29 15:16:21

+0

是的,我也使用过这种技术。 :) – 2011-03-31 15:41:04