如何创建嵌套区域?

时间:2012-03-02 21:23:37

标签: c# wpf module prism region

我正在使用PRISM和Unity Container。

我已经在我的shell中加了一个名为TabControl的{​​{1}}区域。

然后我在另一个名为Common a view的项目中。此视图包含MainRegion区域及其下方的两个按钮。

使用这个常见项目,我创建了几个引用Common项目的模块。当我创建一个新模块时,我需要创建一个视图,它应该将它放在上一个项目的ContentRegion中。

请查看下图。

enter image description here

我的意思是我创建的每个模块,我需要为ContentRegion创建一个View。

我不知道如何实施这种情况,你能指导我吗?

1 个答案:

答案 0 :(得分:1)

根据你的问题说出你想要做什么有点难,但我会试一试。看起来你想要的是本地范围的区域经理。

因此,在每个模块中,您将公共视图添加到选项卡控件区域。它可能看起来像这样:

public class ModuleA
{
   public ModuleA(IRegionManager regionManager) 
   {
      _shellRegionManager = regionManager;
   }
   public bool Initialize()
   {
      IRegion tabRegion = _shellRegionManager.Regions["tabRegion"];

      //You may actually want to use your container to resolve the common view, but 
      //I'm creating it here for demonstration sake.
      Object commonView = new CommonView();

      //This is the important part... setting the 3rd parameter to true gives us 
      //a new locally scoped region manager, so Prism won't complain about the fact
      //that the common view contains regions with names that have already been 
      //registered in other modules
      IRegionManager localRM = tabRegion.Add(new CommonView, "ModuleACommon", true);

      IRegion commonContentRegion = localRM.Regions["ContentRegion"];
      commonContentRegion.Add(new ModuleAView()); 

   }
   IRegionManager _shellRegionManager;
}