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. 初探appium之appium的使用

    上一篇中已经讲了python+appium的环境搭建.这里简单的讲一下appium的使用. 我也是第一次使用appium,看了教程问了人.知道appium可以通过模拟也可以连接上手机使用.本篇中,先使 ...

  2. [转]SVN-版本控制软件

    一.版本控制软件 1.为什么需要版本控制软件 问题:① 团队开发 ② 异地协作 ③ 版本回退 2.解决之道 SCM(Software Configuration Management):软件配置管理 ...

  3. break 和 continue

    break 和 continue 相同点: 都 用在循环体内,如 switch.for.while.do while的程序块中,用于控制程序循环语句的执行 不同点: break可以离开当前switch ...

  4. 操作笔记:tomcat在正式环境

    1,一台服务器有两个容器,比如:jetty,tomcat. 出现问题: jetty启动的时候,tomcat就不能启动了. 此时,需要修改tomcat的配置文件:servler.xml <?xml ...

  5. Response.Write页面跳转

    一.<a>标签 <a href=”test.aspx”></a> 这是最常见的一种转向方法 二.HyperLink控件   1. Asp.net 服务器端控件 属性 ...

  6. error: could not find library containing RSA_new

    error: could not find library containing RSA_new yum -y install openssl-devel apt-get install libssl ...

  7. $watch 和 $apply

    1.当你使用 ng-model, ng-repeat 等等来绑定一个元素的值时, AngularJS 为那个值创建了一个 $watch,只要这个值在 AngularJS 的范围内有任何改变,所有的地方 ...

  8. android studio首次运行出错

    转载2015-10-24 16:28:15 标签:androidstudioandroidstudio无法启androidstudio1.4无法 Internal error. Please repo ...

  9. poj3692_Kindergarten

    这题目大意是:男孩互相认识,女孩互相认识,一部分男女之间认识,老师要选一部分人,要求这部分人必须都相互认识. 这是一个二部图,先求出补图,在补图中G‘左右两点有连线说明在G中两者不认识,反之成立. 所 ...

  10. .NET使用ICSharpCode.SharpZipLib压缩/解压文件

    SharpZipLib是国外开源加压解压库,可以方便的对文件进行加压/解压 1.下载ICSharpCode.SharpZipLib.dll,并复制到bin目录下 http://www.icsharpc ...