第一章到此为止已经全部结束了,接下来按照计划就要翻译 附录H 的第一个示例。。。。。。感觉Prism会很好用的,真的。
4. 使用Prism
现在你已经见到了Prism所提供的大部份功能和设计方式,现在就应该了解使用Prism创建新的应用程序到底有多方便。这一节讲述的如何创建一个基本的Prism应用程序。通过这些基本内容你可以根据需求,扩展Prism提供的功能和设计模式。
【注意】:Prism不仅仅可以让你方便的创建WPF和Silverlight平台上的复杂应用程序,也可以使用到已有程序上。
一个典型的Prism应用程序应该包含一个Shell项目和若干个模块项目。下图展示了开发一个复杂Prism项目所需要进行的活动。
一个典型的Prism应用程序利用前文所述的功能和设计模式完全体现松耦合和关注分离的设计模式所带来的好处。但是在这个例子只描述了一个包含Shell和一个视图的基本Prism应用程序。
【注意】:Prism库的引用
Prism应用程序都需要引用Prism库文件。Prism的安装包中提供了注册文件,注册后可以直接在Visual Studio的“添加引用…”对话框中添加所需要的引用 。那果选择不注册,那么就需要手动添加引用。当然也可以将Prism添加到你的项目中,这样,其它项目只要引用这个项目就可以了。之后的升级可以会添加一些向导以便于逐步使用Prism类型,就好像现在Prism已经支持签名一样。
5、定义Shell
应用程序的Shell定义了程序的基本布局。在Shell中定义了多个可以放置视图的区域。视图,就像Shell一样,可以定义多个区域将内容放到其中,如下图所示。Shell通常设置了整个应用程序的样式。
6、定义Bootstrapper
启动精灵是应用程序和服务以及MEF框架和Unity以及Prism库的连接剂。每个应用程序都有独立的启动精灵,它们都继承于UnityBootstrapper和MefBootstrapper,如下图所示。你需要使用最合适的模块列表。每个应用程序最少都应该包含一个模块列表和一个Shell。
通常情况下,启动精灵将启动日志记录到.NET Framework提供的Trace类中。大部分应用程序需要实现自己的日志系统,那么也可以将这系统嵌入到启动精灵中。
通常情况下,UnityBootstrapper和MefBootstrapper是一种Prism服务,你可以禁用它或者使用自己的启动精灵。
7、创建模块
模块提供了应用程序中一部分功能的视图和服务。模块经常是分在独立的程序集中,并且由不同的团队开发的。每个模块都是由一个继承IModule接口的类来启动。在初始化过程中,这些模块将注册自己的视图和服务并且将其中的一部分视图添加到Shell中。根据你的需要,你将设置这些模块的属性和依赖关系。
8、为Shell添加Model View
模块利用Shell的区域来添加内容。在初始化过程中,模块使用RegionManger来定位将哪些视图放置到Shell中或者在目标区域中注册多个视图类型。RegionManger负责跟踪整个应用程序中的区域变化,它是一个由启动精灵初始化的核心服务。
接下来的章节将详细讲解Prism的关键概念。