我有一个主要的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}}属性时,我发现它是空的!
答案 0 :(得分:3)
我的设置如下:我开始使用Silverlight业务应用程序项目模板。这给了我一个MainPage
我用作我的Shell
和几个视图(Home
和About
)。现在,我没有将这些区域放在我的Shell
上,而是将它们放在Home
视图中,将MainPage保留为母版页。
我对此的看法是,Prism为RegionManager
设置Shell
,并将其传递给任何需要它的人(使用依赖注入容器)。这样,当我在我的模块中询问IRegionManager
时,我得到了Shell
的{{1}},它实际上并不包含任何区域(因此空Regions
属性)。
要解决这一点,我所要做的就是将我的区域放在正确的位置: Shell ,现在一切正常(for)。
<强>更新强>: 好像我的“拿这个”实际上是正确的:),这是Prism Documentation的摘录:(在 Scoped Regions 下)
定义具有附加属性的区域的视图会自动继承其父级的RegionManager。通常,这是在 shell 窗口中注册的全局RegionManager