Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 棱镜:区域中的嵌套区域_C#_Wpf_Module_Prism_Region - Fatal编程技术网

C# 棱镜:区域中的嵌套区域

C# 棱镜:区域中的嵌套区域,c#,wpf,module,prism,region,C#,Wpf,Module,Prism,Region,该项目基于PRISM 我在Shell的选项卡control中有一个主区域 <!-- Main Region : A tab control --> <TabControl prism:RegionManager.RegionName="MainRegion" > </TabControl> 请检查图像。在选项卡模块a中,它显示在选项卡内容视图a的左侧,而右侧是通用视图,因为所有选项卡都必须显示相同的UI 我该

该项目基于PRISM

我在Shell的
选项卡control
中有一个主区域

        <!-- Main Region : A tab control -->
        <TabControl prism:RegionManager.RegionName="MainRegion" >
        </TabControl>
请检查图像。在选项卡
模块a
中,它显示在选项卡内容
视图a的左侧,而右侧是通用视图,因为所有选项卡都必须显示相同的UI


我该怎么做呢?

我想“莱克兰”已经回答了这个问题。在其他区域或视图中添加区域没有问题。我在项目中所做的:

  • 每个模块在构造函数中接收一个IRegionManager和IEventAggregator对象的副本(我使用MEF)
  • Initialize()
    函数中,每个模块都用自己的视图注册自己的区域,等等
  • 每当事件或程序流应该传递到另一个模块(例如)时,我只需使用参数.Publish()预定义事件(CompositePresentationEvent)
  • Shell itslef它只是一个空模板,只定义了两个“全局”区域(如场景中的TabControl),并且它上显示的所有内容都来自不同的模块视图,并且没有在Shell类中实现,甚至没有在包含Shell的项目中实现

因此,您可以在其他模块中定义和实现区域和视图,只需将IRegionManager和IEventAggregator实例以某种方式传递到模块类中即可。

我想“lecrank”已经回答了这个问题。在其他区域或视图中添加区域没有问题。我在项目中所做的:

  • 每个模块在构造函数中接收一个IRegionManager和IEventAggregator对象的副本(我使用MEF)
  • Initialize()
    函数中,每个模块都用自己的视图注册自己的区域,等等
  • 每当事件或程序流应该传递到另一个模块(例如)时,我只需使用参数.Publish()预定义事件(CompositePresentationEvent)
  • Shell itslef它只是一个空模板,只定义了两个“全局”区域(如场景中的TabControl),并且它上显示的所有内容都来自不同的模块视图,并且没有在Shell类中实现,甚至没有在包含Shell的项目中实现

因此,您可以在其他模块中定义和实现区域和视图,只需以某种方式将IRegionManager和IEventAggregator实例传递到模块类中即可。

您的问题有点奇怪,但如果我没有弄错的话,您应该寻找“复合演示者”。向regionmanager注册新区域以显示其他视图的演示者。你也可以在局部范围内创建一个区域。有关更多信息,请参阅


在compositewpf codeplex网站上可以找到Prism的答案,有人可能会问同样的问题:

你的问题有点奇怪,但如果我没弄错的话,你应该找“复合演示者”。向regionmanager注册新区域以显示其他视图的演示者。你也可以在局部范围内创建一个区域。有关更多信息,请参阅


在compositewpf codeplex网站上可以找到Prism的答案,有人可能会问同样的问题:

为什么右侧的公共视图必须位于选项卡控制区域?为什么不在shell内部而在tab控件区域之外创建一个单独的区域呢?因为在实际应用程序中,当在ViewA中选择一个项目时,它将在公共视图中显示项目的详细信息。我的意思是,每个模块都将维护项目的详细信息。为什么右侧的公共视图必须位于选项卡控制区域中?为什么不在shell内部而在tab控件区域之外创建一个单独的区域呢?因为在实际应用程序中,当在ViewA中选择一个项目时,它将在公共视图中显示项目的详细信息。我的意思是,每个模块都会维护物品的详细信息。你能用UNITY容器向我展示这种情况吗?我忘了提了!我正在注册我的视图,但它会给我带来错误,因为这些区域已经存在。您可以使用UNITY容器向我展示这种情况吗?我忘了提了!我正在注册我的视图,但它给我带来了错误,因为区域已经存在MSDN杂志不再工作。你能告诉我你在哪期杂志上找到了这篇文章吗?我的答案是6年前的,而且从来没有把它当作答案来推销。嗯,如果你还知道这期杂志是哪一期的话,我会用上一票来交换。谷歌搜索“复合演示者MSDN杂志”的结果不多。MSDN杂志不再有效。你能告诉我你在哪期杂志上找到了这篇文章吗?我的答案是6年前的,而且从来没有把它当作答案来推销。嗯,如果你还知道这期杂志是哪一期的话,我会用上一票来交换。谷歌搜索“复合演示者MSDN杂志”并没有产生多少效果。
|_ModuleA
| |_ViewA
|
|_ModuleB
  |_ViewB