多个区域内的 PRISM RegionManager 区域
Posted
技术标签:
【中文标题】多个区域内的 PRISM RegionManager 区域【英文标题】:PRISM RegionManager region within multiple regions 【发布时间】:2016-07-29 20:19:33 【问题描述】:我发现自己在尝试解决以下情况时遇到了困难:
我有两个视图,每个视图都有 1 个区域,我们将它们称为 View1.RegionA、View2.RegionB。 我正在将一个控件注册到这些区域,我们称之为控件。 控件还有一个区域(Control.Region),我在其中注册另一个控件,我们称之为 SubControl
|Module_A
-View1
--RegionA
|Module_B
-View2
--RegionB
|Module_C
-Control
--Control.Region
-Subcontrol
当我尝试打开包含 View1 和 View2 的 MainView 时,出现以下错误:
“具有给定名称的区域已注册:Control.Region”
我已经尝试使用Scoped regions 解决这个问题,但是当我这样做时,我的应用程序崩溃了,它试图在应用程序启动时实例化视图,这导致我的应用程序崩溃,因为此时没有初始化大量对象.
我也尝试绑定到 Control.Region.RegionName 属性,但在这种情况下,我的 RegionContext 没有设置并且得到与开始时相同的错误。
还有其他解决方案吗?
【问题讨论】:
【参考方案1】:发生这种情况是因为您显示了多个 Control.Region 实例,并且由于您只允许拥有唯一的区域名称,因此会引发异常。你走在正确的轨道上。您必须使用作用域区域来解决此问题。您很可能在您的作用域区域的实现中做错了什么。您的帖子中没有足够的信息来确定那是什么,但我在这个 PluralSight 课程中涵盖了范围区域,这应该可以帮助您朝着正确的方向前进:
https://app.pluralsight.com/library/courses/prism-showing-multiple-shells/table-of-contents
【讨论】:
嗨,布赖恩,感谢您的回复!我在您的课程早期就注意到了一个区别,那就是我使用区域管理器略有不同,使用 RegisterViewWithRegion,它只会在视图显示时实例化视图,并且在到目前为止的所有 ScopedRegion 示例中,我必须将视图添加到区域管理器时实例化视图。有没有办法做到这一点而不必实例化它?因为这就是它对我来说失败的原因。 老实说,我从未将 RegisterVIewWithRegion 与 Scoped 区域一起使用,主要是因为您必须首先创建作用域区域,这通常在注入视图时完成。如果您愿意,可以使用导航,这样您就不必创建任何视图对象。 我刚刚找到了答案:msdn.microsoft.com/en-us/library/ff921174(v=pandp.40).aspx“如果您需要范围区域管理器,则不应使用视图发现组合” 我可以使用导航是什么意思?以上是关于多个区域内的 PRISM RegionManager 区域的主要内容,如果未能解决你的问题,请参考以下文章