RegionManager.Regions从未包含我的ChildWindow区域。

4

我曾经尝试过一段时间来让它正常工作。基本上,我有一个使用MVVM/PRISM/Unity组合的Silverlight应用程序。

我的外壳由两个区域RootContentRootMenu组成。我的RegionManager.Regions能够很好地看到这两个区域,应用程序运行正确。

问题在于当我的RootContent中的一个视图打开一个ChildWindow时,它包含了另外两个区域,如下所示:

<ContentControl Region:RegionManager.RegionName="WOFSCustomerLookup" />
<ContentControl Region:RegionManager.RegionName="WOFSCustomerView"  />

这个View的ViewModel,即使继承并正确解析了上面的XAML,IRegionManager.Regions集合仍然不包含上述两个新区域,只有RootContent和RootMenu。

更多信息

这是我的ChildWindow如何被调用的(它调用了“View”):

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[]
}

我有遗漏什么吗?


我找到了一篇有趣的文章,似乎可以解决这个情况,但我还没有成功,不过我认为分享是有用的,因为它非常接近我的问题:Ko-Lin Chang: 区域经理 - 善良还是邪恶? - Dorival
1个回答

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

请查看StockTrader参考应用程序中的RegionPopupBehaviors.cs文件。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接