我一直在努力让它发挥作用。基本上我有一个使用MVVM / PRISM / Unity组合的Silverlight应用程序。
我的shell由两个区域RootContent
和RootMenu
组成。我的RegionManager.Regions
能够很好地看到这两个区域,并且应用程序可以正常运行。
当RootContent
中的一个观看次数打开ChildWindow
时,问题就开始了,它包含更多两个区域,如下所示:
<ContentControl Region:RegionManager.RegionName="WOFSCustomerLookup" />
<ContentControl Region:RegionManager.RegionName="WOFSCustomerView" />
此视图的ViewModel上面有这个XAML,即使继承并正确解析,IRegionManager.Regions
集合也不包含上面的两个新区域,只包含RootContent和RootMenu。
这是我的ChildWindow如何被调用(它称为“视图”):
ChildWindow editor = this.container.Resolve<WorkOrderFieldServiceEditor>();
editor.show();
这是我的ViewModel的构造函数:
public WorkOrderFieldServiceViewModel(IUnityContainer container, IRegionManager regionManager)
{
this.container = container;
this.regionManager = regionManager;
// Still have just the two Root regions:
// this.regionManager.Regions[]
}
我错过了什么吗?
答案 0 :(得分:1)
非常确定问题是因为您没有通过Prism显示WorkOrderFieldServiceEditor视图,而只是通过容器获取它的实例,然后直接在其上调用Show方法。所以,Prism并没有真正参与其中。通过引导程序创建主Shell时,将在区域管理器中创建视图中定义的区域。因此,您需要查看如何使用Prism导航到弹出窗口,而不是直接调用Show方法。
在StockTrader参考申请表中查看RegionPopupBehaviors.cs文件。
http://msdn.microsoft.com/en-us/library/ff921074(v=PandP.40).aspx