【问题标题】:Problem with Prism RegionManager and Unity containerPrism RegionManager 和 Unity 容器的问题
【发布时间】:2011-03-16 22:11:26
【问题描述】:

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

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

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

regions:RegionManager.RegionName="MainRegion"

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

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

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

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

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

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

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

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

【问题讨论】:

  • 包含区域的 XAML 是否定义了区域的名称?
  • 是的,当然(见第一个代码 sn-p)

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


【解决方案1】:

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

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

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

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

更新: 似乎我的“对此的看法”实际上是正确的:),这是Prism Documentation 的摘录:(在Scoped Regions下)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2012-08-29
    • 2019-04-09
    • 1970-01-01
    相关资源
    最近更新 更多