Prism 5.0 包含很多新东西,新的快速入门示例,新的范例,更新的文档,Prism类库代码的改变。用来解决已有问题,回应社区所提的需求。(这句话跟 What's New in Prism Library 4.0中的第一句话一模一样,就不能来的新鲜的吗?)

注意:在Silverlight中还得用Prism 4.1.

新指南

Prism5.0包含以下新指南:

  • Prism.Mvvm是一个跨平台的类库,它封装了Prism对MVVM模式的支持。类库中包含ViewModelLocationProvider。视图和视图模型使用了ViewModelLocationProvider中的一个基于转换的方法进行连接,这在 实现MVVM模式 中有介绍。 视图模型可以使用依赖注入容器构造。视图模型定位器的可扩展性会在 扩展Prism介绍。DelegateCommands 现在可以支持异步。还添加一个全新 INotifyPropertyChanged 接口和 BindabaleBase 类。
  • PopupWindowAction 类被添加在Prism.Interactivity 程序集中。用来响应打开一个自定义窗口的交互操作。更多信息可看 进击的MVVM.
  • EventAggregator 类转到Prism.PubSubEvents 这个跨平台的类库中了。
  • NavigationParameters 类可以在导航期间传递一组object类型的参数。你将在Region 或RegionManager 实例中的方法RequestNavigate 的一个重载中使用到。

Library Prism库的改变

Prism5.0库的改变包括增加了新功能,代码组织方式,和APIs.

代码组织

下面是库中代码的一些变化:

  • Microsoft.Practices.Prism.PubSubEvents 跨平台类库包含PubSubEventsEventAggregator 和一些相关的类。
  • Microsoft.Practices.Prism.Mvvm 跨平台类库包含s ViewModelLocationProviderBindableBaseErrorsContainer, PropertySupport, CompositeCommand, DelegateCommand, DelegateCommandBase, and WeakEventHandlerManager
  • Microsoft.Practices.Prism.Mvvm.Desktop 程序集包含ViewModelLocator 附加属性。
  • EventAggregator 类被标记为过时。
  • Silverlight和phone的版本被移除了。如果你想用,还得看Prism4.1。
  • Prism和Prism.Mvvm 是彼此独立的单共享了IActiveAware ,因此IActiveAware 已经移到Prism.SharedInterfaces.

在Prism5.0这个版本中,发布/订阅事件功能移到了一个单独的程序集(Prism.PubSubEvents)。     DelegateCommandCompositeCommand, 和ViewModel 的支持移动到(Prism.Mvvm)。这样的分离很有好处。

  • 你可以可选择的使用Prism的功能。如果你想要区域和模块化,你可以使用核心Prism程序集。如果你想用ViewModel 和命令支持,你可以使用Prism.Mvvm. 如果你只想使用 发布/订阅事件,使用Prism.PubSubEvents。每个程序集都更小更易理解了。
  • 你可以在跨平台类库中构建你的Viewodel ,其中你还可以使用Prism.Mvvm 和 Prism.PubSubEvents ,以为这俩也是跨平台的库。把你的ViewModel 代码放到PCL(跨平台类库)里,你的ViewModel 就需要依赖那种平台无关的程序集,以便你的代码可以针对多种平台。
  • 更新这些小的程序集更加简单快速了。

API的改变

Prism类库API有一些关键领域的改变。bootstrapper 有重大变化,一些重用代码被添加以支持Prism新功能。

MVVM和事件聚合的改变。

移动ViewModel 和EventAggregator 到PCL(跨平台类库)引起了一些改变。改变如下:

  • 在 Prism.Mvvm中的BindableBase 类替代NotifcationObject 。NotificationObject 和 NotificationObject 类在Prism程序集中被标记为过时。
  • 当你的类继承自BindableBase 类,可用使用SetProperty 方法更新属性的支持字段并引起相应属性改变事件。一个新的OnPropertyChanged 方法可用以lambda表达式作为参数。
  • 使用在 Microsoft.Practices.PubSubEvents 跨平台类库的PubSubEvents 类替代CompositePresentationEvents。在事件解决方案文件夹中的类已经被标记为过时。
  • UriQuery 类重命名为NavigationParameters,它保存了一些之前相同的功能,添加了object类型参数的传递。
  • DelegateCommand 包含异步处理支持,并且被移动到Prism.Mvvm 跨平台类库。DelegateCommand 和CompositeCommand 都使用了theWeakEventHandlerManager 来触发CanExecuteChanged 事件。WeakEventHandlerManager 必须被第一个构造在UI线程上以便可以获得UI线程的SynchronizationContext 属性引用。
  • EventAggregator 现在必须构建在UI线程,这样才能获取SynchronizationContext 属性引用。
  • WeakEventHandlerManager 现在变为public。
  • DelegateCommand 的 Execute 和 CanExecute 方法现在被标记为virtual 。

Prism中被添加的核心API

一些命名空间是新被添加的,为了支持新功能:

  • Microsoft.Practices.Prism.PubSubEvents 帮助你发送松耦合的消息,是使用一个跨平台的类。
  • Microsoft.Practices.Prism.Mvvm 帮你使用MVVM模式。是使用一个跨平台的类和一些平台相关的程序集。
  • Microsoft.Practices.Prism.SharedInterfaces 添加了 Prism 和Prism.Mvvm 共享的IActiveAware 接口。因此IActiveAware 接口已经从Prism 核心库中移除了。

CodePlex上问题的解决

  • 8532:  InteractionRequestTrigger 可以引起一些导致内存泄露的实现。
  • 9153: 'Notification'应该是个接口
  • 9438: 导航到一个存在的视图。
  • 5495: 命令事件
  • 8101: DelegateCommand 不可扩展
  • 5623: WeakEventHandlerManager 公开。
  • 9906: 当使用XAML模块目录的一个bug。
  • 7215: 使用 MEF Bootstrapper中ModuleCatalog.CreateFromXaml的问题。
  • 8703: RegionManager::IsInDesignMode.
  • 4349: 默认的区域行为顺序问题。
  • 3552:区域管理器不识别费WPF程序。

示例代码的改变

Prism5.0包含了11个单独的代码示例,展示不同的功能。一些Prism4.1的示例被替换或是移除,新的示例被添加。

被添加到Prism5.0的新示例:

  • 基础 MVVM 快速入门.此示例展示了一个非常简单的使用ViewModel 定位器的MVVM应用程序。并指示了一个嵌套ViewModels 。更多信息,请看MVVM快速入门。
  • MVVM  快速入门 .此示例已经从此版本移除。
  • MVVM 参考实现. 此示例已经从此版本移除。
  • 视图切换导航快速入门 . 此示例现在支持WPF。它描述了怎样使用Prsim区域导航API。更多信息,请看 视图切换导航快速入门.
  • 基于状态导航快速入门 . 此示例现在支持WPF。它站了一个使用视图状态管理者的方法去定义视图状态并允许切换。更多信息,请看 基于状态导航快速入门
  • 组合式UI快速入门 .  此示例现在支持WPF。它替换了在Prism2.0中的视图注入快速入门和视图发现快速入门。当前版本下,视图发现和视图注入在同一个例子程序中体现。更多信息,请看 组合式UI快速入门.
  • 交互快速入门. 这是个新的快速入门,展示了怎样暴露一个视图上的交互请求到视图模型上。当弹窗需要一个自定义视图模型时,此交互可以是一个弹窗,确认窗,自定义弹窗,或是一个更复杂的情况。它也展示了Prism的InvokeCommandAction 动作,可以从触发器传递一个作为命令参数的EventArgs 。更多信息,请看 交互快速入门

目前可用的NuGet包

在你的应用程序,你可以使用NuGet添加Prism程序集的引用。包里包括:

注意
Prism NuGet包将下载 Prism.Composition, Prism.Interactivity, Prism.Mvvm, and Prism.PubSubEvents包。你也可以单独添加Prism.Interactivity, Prism.Mvvm, 和Prism.PubSubEvents 引用。

更多信息

如果你想了解从Prism4.1升级到Prism5.0。请看从Prism 4.1升级.

 

Prism5.0新内容(纯汉语版)的更多相关文章

  1. 下载并安装Prism5.0库(纯汉语版)

    Prism5.0中包含了文档,WPF代码示例,程序集.本篇告诉你从哪里获取程序集和代码示例,还有NuGet包的内容. 对于新功能,资产,和API的更改信息,请看Prism5.0新内容. 文档 Pris ...

  2. Prism5.0新内容 What's New in Prism Library 5.0 for WPF(英汉对照版)

    Prism 5.0 includes guidance in several new areas, resulting in new code in the Prism Library for WPF ...

  3. Prism5.0开发人员指南内容(纯汉语版)

    Prism指南包含以下内容: 下载并安装Prism Prism5.0新内容 介绍 初始化应用程序 组件间的依赖管理 模块化应用程序开发 实现MVVM模式 进击的MVVM 组合式用户界面 导航 松耦合组 ...

  4. Prism开发人员指南5-WPF开发 文档翻译(纯汉语版)

    2014四月       Prism以示例和文档的形式帮助你更简单的设计丰富灵活易维护的WPF程序.其中使用的设计模式体现了一些重要的设计原则,例如分离关注点和松耦合,Prism帮助你利用松耦合组件设 ...

  5. 1: 介绍Prism5.0(纯汉语版)

      Prism帮助更简单的设计丰富,灵活,易维护的WPF桌面程序.其中使用MVVM,组合式视图,事件聚合等设计模式.这很符合一些重要的架构设计及原则.帮助你创建一个模块化的应用程序——可以独立开发松耦 ...

  6. 2: 使用Prism初始化程序(纯汉语版)

    本篇内容讲解了Prism应用程序启动和运行都发生了什么.一个Pris应用程序在程序启动期间需要注册和配置——这被叫做引导应用程序.Prism引导过程包括创建和配置一个模块目录,创建一个例如Unity的 ...

  7. Prism5.0开发人员指南内容 Contents of the Developer's Guide to Prism Library 5.0 for WPF(英汉对照版)

    The Prism for WPF guide contains the following topics: Prism指南包含以下内容: Download and Setup Prism 下载并安装 ...

  8. 下载并安装Prism5.0库 Download and Setup Prism Library 5.0 for WPF(英汉对照版)

    Learn what’s included in Prism 5.0 including the documentation, WPF code samples, and libraries. Add ...

  9. VS2015预览版中的C#6.0 新功能(二)

    VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性 以前自动属性必须同时提供setter和getter方法,因而只读属性只能通 ...

随机推荐

  1. Andrew Ng机器学习编程作业:K-means Clustering and Principal Component Analysis

    作业文件 machine-learning-ex7 1. K-means聚类 在这节练习中,我们将实现K-means聚类,并将其应用到图片压缩上.我们首先 从二维数据开始,获得一个直观的感受K-mea ...

  2. 01 javaSe 01 抽象类和接口

      抽象类 接口   目录(?)[-] 1 抽象类与接口是面向对象思想层面概念不是程序设计语言层面概念 2 抽象类是本体的抽象接口是行为的抽象 3 C中抽象类与接口的探讨     目录(?)[+]   ...

  3. 吴超老师课程--HBASE的查询手机项目

    查询1.按RowKey查询2.按手机号码查询3.按手机号码的区域查询 //查询手机13450456688的所有上网记录 public static void scan(String tableName ...

  4. PHP逐字符读取数据

    <?php $file = fopen("Minot.txt", "r") or exit("Unable to open file!" ...

  5. 练T25- focus必看!所有成功截图汇总

    http://www.guokr.com/post/565880/ 25914人加入此小组 发新帖 练T25- focus必看!所有成功截图汇总! 读图模式 作家向威 作家 2014-02-22 07 ...

  6. Git 快速入门--Git 基础

    Git 快速入门 Git 基础 那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 G ...

  7. git---控制面板提交

    比如我修改了一个项目的代码.需要提交代码. 1.打开项目所在目录,右键>Git Bash Here 2.打开交互模式.git会列出所有untracked的文件,然后你可以用各种形式加入.git ...

  8. URAL 2081 Faulty dial

    题目: Faulty dial Pavel has not played ACM for ages, nor does he train teams, nor prepare problems. Th ...

  9. 2018 Multi-University Training Contest 1 - D Distinct Values (STL+双指针)

    题意:数量为N的序列,给定M个区间,要求对每个区间Li,Ri,都有al..r (l≤i<j≤r), ai≠aj.构造这个序列使其字典序最小. 分析:如果对于每个所给区间都暴力扫一遍,1e5的数据 ...

  10. http://blog.csdn.net/dancing_night/article/details/46698853

    http://blog.csdn.net/dancing_night/article/details/46698853