Prism是一个开发和设计模块化WPF应用的基础框架,里面包含了MVVM pattern和设计示例。当前最新的版本是Prism 5.0,官方网站:https://compositewpf.codeplex.com/

Prism 5.0较4.0有相当的改动,其中主要变动的两个部分:

1. 提供Portal Class Library(PCL)库。这样就可支持WPF,Windows Phone 8,Windows Store 8.1平台而不用修改代码。

2. 把之前一个大的Prism DLL拆分成多个功能块,这些功能块可以单独应用。模块主要有Prism.Composition, Prism.Mvvm, Prism.PubSubEvents, 和 Prism.Interactivity。

  • 我们可以只引入我们想用的模块,如果只用event相关的,只需引用PubSubEvent模块;
  • 使用PCL,平台无关;
  • 更新快且简单;

注意,如果想在.NET 4.0,Sliverligh, Windows Phone 7.0开发,得使用Prism 4.1及以下版本。

Prism设计目标

  • 模块化(module)
  • 减少相互依赖,松耦合
  • 重用
  • 高质量
  • 可扩展

Prism主要概念

  • Module: Module是可以被独立开发、测试和部署的包或功能块。比如一个独立的业务模块,一个基础的Logging模块等。
  • Module Catalog: 主要是用来指定加载哪些module,什么时候加载,加载的顺序。可以使用代码或XAML文件或config文件来设置。
  • Shell: 应用程序的Host,用来定义应用程序UI的全局区域结构,容纳加载的modules。
  • Views: 定义应用程序的UI。
  • View Model:处理UI行为和状态。
  • Model:应用程序的业务模型和数据。
  • Commands
  • Regions:定义UI区域
  • Navigation
  • EventAggregator
  • DI Container
  • Services
  • Controllers
  • Bootstrapper

后续文章会逐个解读Prism这些主要概念是如何实现的。

《Prism 5.0源码走读》Prism 5.0简介的更多相关文章

  1. WangSql 3.0源码共享(WangSql 1.0重大升级到3.0)

    WangSql 1.0博文阅读: http://www.cnblogs.com/deeround/p/6204610.html 基于1.0做了以下重大改动: 1.多数据实现方式调整 2.使用EmitM ...

  2. 《Prism 5.0源码走读》ModuleCatalog

    概念 ModuleCatalog 是Prism中主要概念之一,主要用来保存应用程序可用的modules(模块),每个module都是用ModuleInfo来定义(包含module的名称.类型和位置). ...

  3. 《Prism 5.0源码走读》UnityBootstrapper

    UnityBootstrapper (abstract class)继承自Bootstrapper(abstract)类, 在Prism.UnityExtensions.Desktop project ...

  4. 《Prism 5.0源码走读》Service Locator Pattern

    在Prism Bootstrapper里面取实例的时候使用 ServiceLocator模式,使用的是CommonServiceLocator库 (http://commonservicelocato ...

  5. 《Prism 5.0源码走读》 设计模式

    Prism或Prism构建的应用程序时会使用大量的设计模式,本文简要列举Prism相关的那些设计模式. Adapter(适配器模式):Prism Library主要在Region和IoC contai ...

  6. 《Prism 5.0源码走读》Bootstrapper

    Prism框架需要在应用程序启动的时候进行一些初始化的工作,Bootstrapper就是来做这些的,是其切入点. Bootstrapper主要要做的事有:创建和配置module catalog,创建D ...

  7. WangSql 1.0源码共享

    一,项目背景 现在基本上大大小小的项目都需要和数据库打交道,自然而然数据库操作会有很多地方,而使用传统ADO.NET整个流程有点麻烦,出参都需要手动转换为对象.基于以上,我们需要一个SQL执行工具,能 ...

  8. 编译jmeter5.0源码

    jmeter5.0使用过程中,遇到request或者response乱码的情况,想要一次性解决这个问题,需要编译ApacheJMeter_http.jar这个包(lib\ext文件下)里的Reques ...

  9. Apache Spark源码走读之23 -- Spark MLLib中拟牛顿法L-BFGS的源码实现

    欢迎转载,转载请注明出处,徽沪一郎. 概要 本文就拟牛顿法L-BFGS的由来做一个简要的回顾,然后就其在spark mllib中的实现进行源码走读. 拟牛顿法 数学原理 代码实现 L-BFGS算法中使 ...

随机推荐

  1. SQL必知必会笔记(1)

    去SQL AXDB 中Query数据 Open the SQL > Connect > Select AXDB > new Query select REFID, ITEMID, R ...

  2. Web自动化框架LazyUI使用手册(1)--框架简介

    作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...

  3. 目标检测--Rich feature hierarchies for accurate object detection and semantic segmentation(CVPR 2014)

    Rich feature hierarchies for accurate object detection and semantic segmentation 作者: Ross Girshick J ...

  4. ASPxTreeList控件去根节点的新增修改操作(写在onCommandColumnButtonInitialize()事件中)

    treelist去掉根节点按钮效果图: //去掉父节点及子节点旁的新增.修改.删除操作(写在onCommandColumnButtonInitialize事件中) protected void Tre ...

  5. md5的一些用法

    package md5; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /* * ...

  6. @service中构造方法报错

    因为类首先被Spring实例化的时候,会调用构造函数.只有实例化后,才会注入.你等于没注入就调用了,所以报错.

  7. curl返回常见错误码

    转自:http://blog.csdn.net/cwj649956781/article/details/8086337 CURLE_OK() 所有罚款.继续像往常一样. CURLE_UNSUPPOR ...

  8. 关于TCP协议握手的那些事儿

    旁白 今天面了下鹅场的后台技术开发,面试官问了我关于TCP连接协议的3次握手和断开连接协议的4次握手的问题.因为之前看过TCP的连接和断开处理,但是印象没有那么深刻.我想主要原因是一直重复简单的记忆, ...

  9. SQL Server T-SQL高级查询(转)

    高级查询在数据库中用得是最频繁的,也是应用最广泛的.   Ø 基本常用查询   --select select * from student; --all 查询所有 select all sex fr ...

  10. c89和c99的区别【转】

    //本文转自:http://www.360doc.com/content/10/0324/18/2633_20101093.shtml 注: GCC支持C99, 通过 --std=c99 命令行参数开 ...