Silverlight 4.0 Prism RegionManager和Unity容器出现问题
我有一个主要的Silverilght项目和其他模块,我正在使用Prism将它们与Unity粘合在一起以进行依赖注入 我有一个模块依赖于Silverlight 4.0 Prism RegionManager和Unity容器出现问题,silverlight-4.0,unity-container,regions,prism-4,Silverlight 4.0,Unity Container,Regions,Prism 4,我有一个主要的Silverilght项目和其他模块,我正在使用Prism将它们与Unity粘合在一起以进行依赖注入 我有一个模块依赖于IRegionManager,它自然会被Unity注入其中 我运行的问题是,我得到的RegionManager的Regions属性不包含任何区域,即使我在Shell中声明了其中两个区域,如下所示: regions:RegionManager.RegionName="MainRegion" 我想不出这种行为的原因。我已经尝试使用 Container.Registe
IRegionManager
,它自然会被Unity注入其中
我运行的问题是,我得到的RegionManager
的Regions
属性不包含任何区域,即使我在Shell中声明了其中两个区域,如下所示:
regions:RegionManager.RegionName="MainRegion"
我想不出这种行为的原因。我已经尝试使用
Container.RegisterInstance<IRegionManager>(new RegionManager());
这就是为什么我需要抓住“MainRegion”对象本身并对其进行操作
我希望有人已经弄明白了。我将非常感激:)
编辑:
我应该提到,视图发现工作得很好,我可以
RegisterViewWithRegion
,但是当我检查RegionManager
的Regions
属性时,我发现它是空的 在思考这个问题及其发生的背景时,我突然意识到,就像软件中的大多数bug一样,问题并不在我所看到的地方
我的设置如下:我从Silverlight业务应用程序项目模板开始。这给了我一个主页
,我用它作为我的外壳
,还有一些视图(主页
和关于
)。现在,我不再让区域位于我的Shell
,而是将它们放在主页
视图中,将主页保持为母版页
我的观点是Prism为Shell
设置了一个RegionManager
,并将其传递给需要它的人(使用依赖项注入容器)。这样,当我在模块中要求使用IRegionManager
时,我得到了Shell
中的一个,它实际上不包含任何区域(因此是空的Regions
属性)
为了解决这个问题,我所要做的就是把我的区域放在正确的位置:外壳,现在一切都很好
更新:
似乎我的“接受这一点”实际上是正确的:),这是摘自:(在作用域下)
定义具有附着属性的区域的视图将自动继承其父对象的RegionManager。通常,这是在shell窗口中注册的全局RegionManager
包含该区域的XAML是否定义了该区域的名称?当然可以(请参阅第一个代码段)
_regionManager.RegisterViewWithRegion("MainRegion", typeof(MyView));