Prism RegionManager和Unity容器的问题

时间:2011-03-16 22:11:27

标签: silverlight-4.0 unity-container regions prism-4

我有一个主要的Silverilght项目和其他模块,我正在使用Prism将它们与Unity一起粘合在一起用于依赖注入。

我的一个模块取决于IRegionManager,当然,它会被Unity注入。

我正在遇到的问题是,我得到的Regions RegionManager属性不包含任何区域,即使我已经在我的Shell中声明了其中两个,如下所示:

regions:RegionManager.RegionName="MainRegion"

我无法弄清楚这种行为的原因。我尝试使用

RegionManager注册为单身人士
Container.RegisterInstance<IRegionManager>(new RegionManager());

以及让团结处理这个。但是,我得到了相同的结果:(

我想要实现的是将视图注入特定区域并激活它,这是无法使用

完成的。
_regionManager.RegisterViewWithRegion("MainRegion", typeof(MyView));

这就是为什么我需要掌握“MainRegion”对象本身并操纵它。

我希望有人知道这一点。我会非常感激:))

修改: 我应该提一下,视图发现工作正常,我可以RegisterViewWithRegion,但是当我检查Regions的{​​{1}}属性时,我发现它是空的!

1 个答案:

答案 0 :(得分:3)

在考虑这个问题及其发生的背景时,它让我感到震惊,就像软件中的大多数错误一样,问题不在我看的地方!

我的设置如下:我开始使用Silverlight业务应用程序项目模板。这给了我一个MainPage我用作我的Shell和几个视图(HomeAbout)。现在,我没有将这些区域放在我的Shell上,而是将它们放在Home视图中,将MainPage保留为母版页。

我对此的看法是,Prism为RegionManager设置Shell,并将其传递给任何需要它的人(使用依赖注入容器)。这样,当我在我的模块中询问IRegionManager时,我得到了Shell的{​​{1}},它实际上并不包含任何区域(因此空Regions属性)。

解决这一点,我所要做的就是将我的区域放在正确的位置: Shell ,现在一切正常(for)。

<强>更新: 好像我的“拿这个”实际上是正确的:),这是Prism Documentation的摘录:(在 Scoped Regions 下)

  

定义具有附加属性的区域的视图会自动继承其父级的RegionManager。通常,这是在 shell 窗口中注册的全局RegionManager