RegionManager.Regions从不包含我的ChildWindow区域

时间:2011-11-08 17:41:45

标签: silverlight mvvm unity-container prism

我一直在努力让它发挥作用。基本上我有一个使用MVVM / PRISM / Unity组合的Silverlight应用程序。

我的shell由两个区域RootContentRootMenu组成。我的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[]
}

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

非常确定问题是因为您没有通过Prism显示WorkOrderFieldServiceEditor视图,而只是通过容器获取它的实例,然后直接在其上调用Show方法。所以,Prism并没有真正参与其中。通过引导程序创建主Shell时,将在区域管理器中创建视图中定义的区域。因此,您需要查看如何使用Prism导航到弹出窗口,而不是直接调用Show方法。

在StockTrader参考申请表中查看RegionPopupBehaviors.cs文件。

http://msdn.microsoft.com/en-us/library/ff921074(v=PandP.40).aspx