是的,PRISM 会在这里为您提供帮助。
这里有很多值得一提的事情。
RE:棱镜适合我吗?
您可以按需加载模块。PRISM 具有在运行时加载模块的功能,因此在您的情况下,如果您使用 Shell 和 ModuleA 启动所述解决方案。然后,您的用户触发一个事件(即菜单选择),然后它可以允许您动态加载 ModuleB,然后将其注入游戏。不过要明确一点,你真的需要坐下来做功课,因为你需要确保 ModuleB 对其他模块等没有任何依赖(通常使用基础设施模块是明智的。我使用过技术我有一个模块清单,我在 XML 中查找列出了它的绝对依赖项,然后我确保首先加载它们,然后加载 ModuleB)。
请参阅通过 PRISM 帮助文档(开发活动)按需加载模块。还查找准备远程下载的模块
RE:在运行时注入视图
通过菜单将视图注入区域是访问 IRegionManager 然后添加它的简单案例。为此,请确保在您使用的上述 ViewModel/Presenter/Controller 的构造函数中:
MyConstructor(IRegionManager regionManager, IUnityContainer container)
与 PRISM 一样,您几乎可以将任何您想要的对象添加到您的构造中,并且 PRISM 将确保它按时按预算到达那里(呵呵)。
从那里开始,您将采用添加视图的正常方法......例如:
IMyViewInstance myViewInstance = this.container.Resolve<IMyViewInstance>();
IRegion myRegion = this.regionManager.Regions["YourRegion"];
myRegion.add(myViewInstance);
myRegion.Active(myViewInstance);
所有人都应该团结起来!:)
笔记:
- 确保在 Construct 中设置了对容器和 regionManager 的本地引用(this.container = container 等)。
- 如果您不确定上述命名空间存在的位置,例如右键单击 IUnityContainer 并让 Visual Studio 解决它(右键单击菜单)
- 将添加逻辑放入您的菜单事件中,或者使用中心方法 - 无论哪种方式让您的头发向后吹:)
Scott Barnes - 富平台产品经理 - Microsoft。