C# PRISM RegionManager多个区域内的区域

C# PRISM RegionManager多个区域内的区域,c#,wpf,prism,region,C#,Wpf,Prism,Region,我发现自己正处于一个困难的境地,试图解决以下情况: 我有两个视图,每个视图有一个区域,我们把它们称为View1.RegionA,View2.RegionB。 我正在将一个控件注册到这些区域,让我们调用此控件。 控件还有一个区域(Control.region),我正在向其中注册另一个控件,让我们调用这个subcrol |Module_A -View1 --RegionA |Module_B -View2 --RegionB |Module_C -Control --Cont

我发现自己正处于一个困难的境地,试图解决以下情况:

我有两个视图,每个视图有一个区域,我们把它们称为View1.RegionA,View2.RegionB。 我正在将一个控件注册到这些区域,让我们调用此控件。 控件还有一个区域(Control.region),我正在向其中注册另一个控件,让我们调用这个subcrol

|Module_A
  -View1
  --RegionA
|Module_B
  -View2
  --RegionB
|Module_C
  -Control
  --Control.Region
  -Subcontrol
当我尝试打开包含View1和View2的MainView时,出现以下错误:

“已注册具有给定名称的区域:Control.Region”

我曾尝试使用解决此问题,但当我这样做时,我的应用程序崩溃了,因为它试图在应用程序启动时实例化视图,这导致我的应用程序崩溃,因为此时未初始化对象负载

我还尝试绑定到Control.Region.RegionName属性,但在本例中,没有设置RegionContext,并出现与开始时相同的错误


是否有其他解决方案?

发生这种情况是因为您显示了Control.Region的多个实例,并且由于您只允许具有唯一的区域名称,因此会引发异常。你在正确的轨道上。必须使用作用域来解决此问题。您很可能在实现作用域时出错。您的帖子中没有足够的信息来确定这是什么,但我在本PluralSight课程中介绍了作用域,这将有助于您朝着正确的方向前进:


发生这种情况是因为您正在显示Control.Region的多个实例,并且由于您只允许具有唯一的区域名称,因此会引发异常。你在正确的轨道上。必须使用作用域来解决此问题。您很可能在实现作用域时出错。您的帖子中没有足够的信息来确定这是什么,但我在本PluralSight课程中介绍了作用域,这将有助于您朝着正确的方向前进:


嗨,布莱恩,谢谢你的回复!我在课程早期就注意到了一个不同点,那就是我使用区域管理器的方式略有不同,使用RegisterViewWithRegion,它只会在视图显示时实例化视图,在所有ScopedRegion示例中,到目前为止,我必须在将视图添加到区域管理器时实例化视图。有没有一种方法可以不用实例化就可以做到这一点?因为这就是它失败的原因。老实说,我从未将RegisterVIewWithRegion与作用域一起使用,主要是因为您必须首先创建作用域,这通常是在注入视图时完成的。如果愿意,您可以使用导航,这样就不必创建任何视图对象。我刚刚找到了答案:“如果您需要作用域管理器,就不应该使用视图发现组合”您说我可以使用导航是什么意思?嗨,Brian,感谢您的回复!我在课程早期就注意到了一个不同点,那就是我使用区域管理器的方式略有不同,使用RegisterViewWithRegion,它只会在视图显示时实例化视图,在所有ScopedRegion示例中,到目前为止,我必须在将视图添加到区域管理器时实例化视图。有没有一种方法可以不用实例化就可以做到这一点?因为这就是它失败的原因。老实说,我从未将RegisterVIewWithRegion与作用域一起使用,主要是因为您必须首先创建作用域,这通常是在注入视图时完成的。如果愿意,您可以使用导航,这样就不必创建任何视图对象。我刚刚找到了答案:“如果您需要作用域管理器,就不应该使用视图发现组合”您所说的我可以使用导航是什么意思?