Edw*_*uay 0 silverlight wpf prism
我正在阅读他们所说的Prism v2指南:
在初始化期间,模块使用RegionManager定位shell 中的区域并向这些区域添加一个或多个视图,或者注册要在这些区域内创建的一个或多个视图类型
我知道在引导程序中添加了视图,例如在GetModuleCatalog()方法中:
protected override IModuleCatalog GetModuleCatalog()
{
ModuleCatalog catalog = new ModuleCatalog()
.AddModule(typeof(HelloWorldModule.HelloWorldModule));
return catalog;
}
Run Code Online (Sandbox Code Playgroud)
但注册视图类型意味着什么?为什么模块需要与shell"注册视图类型",如果他们已经像上面的代码一样"添加他们的视图"?
在您的代码中,您不是将视图添加到引导程序,而是将模块添加到ModuleCatalog.CAB/Prism/Composite UI世界中的模块可以包含视图,但很多时候它提供了某种其他模块可以使用的附加服务.例如,假设我有一个Shell正好使用一些停靠管理器来显示视图.我希望模块使用API IDockingWindowService来显示/隐藏窗口.我希望服务实现可以轻松互换,因此我创建了一个包含名为DockingWindowService的服务的Module,并实现了IDockingWindowService.我使用ModuleCatalog注册了该模块.
复合框架工作流将创建此服务,将其注册到引导程序,并且在此事实之后加载的任何模块都可以使用IDockingWindowService.这项服务不是一种观点,而是逻辑; 只是想指出这种区别.话虽这么说,模块可以包含0个或更多视图(或者,作为简化,UserControls).UI的单位是视图.模块更像是逻辑和/或UI捆绑概念.
回到您的特定问题:文档说的是,如果您使用区域来显示视图,则可以使用区域注册视图类型.每当显示Region时,它将使用Unity容器自动构建View.
| 归档时间: |
|
| 查看次数: |
1742 次 |
| 最近记录: |