【发布时间】:2016-05-18 11:37:40
【问题描述】:
我实际上正在为一个使用 PRISM 和 Unity 的项目工作,我遇到了模块之间的交互问题。
项目的架构实际上是这样的:
App
-AppModuleA (Layout)
-AppModuleB
-AppModuleC
-AppModuleD
应用程序实际上是这样的:
如果我将模块添加到主区域,它会作为窗格添加,因为主区域是 Infragistics 的 XamDockManager。它还会每次调用 AppModuleA 作为主布局,因此会多次实例化它。
我想要做的实际上是向 AppModuleA 的 XamDockManager 添加一个显示 ContentPane 的 AppModuleB(或 C 或 D)视图,我该如何做到这一点?
我阅读了 PRISM 教程 there,但我没有找到如何去做(即使在第 8 部分中说它是可能的)
此外,在由松散耦合的模块组成的复合应用程序中,视图通常会在单独的模块中定义。需要以一种不会在模块之间引入紧密耦合和依赖关系的方式来识别各个视图。
任何帮助将不胜感激,如果您发现这还不够,请随时向我询问更多信息。
提前谢谢你。
【问题讨论】:
-
不确定,如果我明白了,您希望 AppModuleB 的视图出现在 AppModuleB 的视图中吗?在 AppModuleA 的视图中放置一个区域,并让 AppModuleB 在该区域中注入其视图(当然,它们都必须知道该区域的名称,这应该在两个模块都知道的程序集中定义)。
-
@Haukinger 谢谢你的回答。如果我在 AppModuleA 的视图中放置一个区域,我还可以多次实例化这个模块,每个选项卡都在内部显示具有不同模块(B、C、D 等)的区域吗?
-
区域需要有唯一的名称......即使没有,你的模块 B、C、D 怎么知道他们应该使用 A 的哪个实例?
-
那么我可以在每次实例化 AppModuleA 时为区域指定不同的名称吗?根据this document看来是可以的
-
"使用代码添加区域 [...]下面的代码示例展示了如何从代码隐藏文件中向控件添加区域。[...]" 所以模块 B 添加由模块 A 创建的视图中的外壳视图?然后模块 B 可以传递区域的名称,它将把他自己的视图注入到创建布局的服务中,以注入到 shell 中,我想。
标签: c# unity-container prism