1

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

我有一个依赖于 Unity 的模块,IRegionManager它自然会被 Unity 注入。

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

regions:RegionManager.RegionName="MainRegion"

我无法弄清楚这种行为的原因。我尝试RegionManager使用将 a 注册为单例

Container.RegisterInstance<IRegionManager>(new RegionManager());

以及离开统一处理这个。但是,我得到了相同的结果:(

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

_regionManager.RegisterViewWithRegion("MainRegion", typeof(MyView));

这就是为什么我需要掌握“MainRegion”对象本身并对其进行操作。

我希望有人能解决这个问题。我将非常感谢:)

编辑:我应该提一下,视图发现工作得很好,我可以RegisterViewWithRegion,但是当我检查 的Regions属性时RegionManager,我发现它是空的!

4

1 回答 1

3

在考虑这个问题及其发生的背景时,我突然想到,就像软件中的大多数错误一样,问题不在我所寻找的地方!

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

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

为了解决这个问题,我所要做的就是将我的区域放在它们应有的位置:Shell,现在一切都运行良好。

更新:似乎我的“接受这个”实际上是正确的 :),这是Prism 文档的摘录:(在Scoped Regions下)

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

于 2011-03-21T22:57:37.303 回答