我已经挣扎了一段时间想让它发挥作用。基本上,我有一个Silverlight应用程序,使用MVVM/PRISM/Unity组合。
我的shell由两个区域RootContent和RootMenu组成。我的RegionManager.Regions能够很好地看到这两个区域,并且应用程序正确运行。
当RootContent中的一个视图打开一个ChildWindow时,问题就开始了,它包含更多的两个区域,如下所示:
<ContentControl Region:RegionManager.RegionName="WOFSCustomerLookup" />
<ContentControl Region:RegionManager.RegionName="WOFSCustomerView" />具有上述XAML的此视图的ViewModel,即使继承和正确解析,IRegionManager.Regions集合也不包含上面的两个新区域,只有RootContent和RootMenu。
更多信息
--这就是我的ChildWindow的调用方式(它调用“视图”):
ChildWindow editor = this.container.Resolve<WorkOrderFieldServiceEditor>();
editor.show();,这是my ViewModel:的构造函数
public WorkOrderFieldServiceViewModel(IUnityContainer container, IRegionManager regionManager)
{
this.container = container;
this.regionManager = regionManager;
// Still have just the two Root regions:
// this.regionManager.Regions[]
}我错过什么了吗?
发布于 2011-11-09 18:46:23
非常肯定,问题在于您不是通过Prism显示WorkOrderFieldServiceEditor视图,而是通过容器获取它的一个实例,然后直接在其上调用Show。所以,棱镜并没有真正参与其中。当通过引导程序创建主Shell时,将在区域管理器中创建视图中定义的区域。因此,您需要查看如何使用Prism导航到弹出窗口,而不是直接调用Show方法。
签出StockTrader引用应用程序中的StockTrader文件。
http://msdn.microsoft.com/en-us/library/ff921074(v=PandP.40).aspx
https://stackoverflow.com/questions/8054761
复制相似问题