Prism5.0新内容(纯汉语版)
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 跨平台类库包含PubSubEvents, EventAggregator 和一些相关的类。
- Microsoft.Practices.Prism.Mvvm 跨平台类库包含s ViewModelLocationProvider, BindableBase, ErrorsContainer, 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)。 DelegateCommand, CompositeCommand, 和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
- Prism.Composition
- Prism.Interactivity
- Prism.Mvvm
- Prism.PubSubEvents
- Prism.UnityExtensions
- Prism.MEFExtensions
注意 |
---|
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新内容(纯汉语版)的更多相关文章
- 下载并安装Prism5.0库(纯汉语版)
Prism5.0中包含了文档,WPF代码示例,程序集.本篇告诉你从哪里获取程序集和代码示例,还有NuGet包的内容. 对于新功能,资产,和API的更改信息,请看Prism5.0新内容. 文档 Pris ...
- 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 ...
- Prism5.0开发人员指南内容(纯汉语版)
Prism指南包含以下内容: 下载并安装Prism Prism5.0新内容 介绍 初始化应用程序 组件间的依赖管理 模块化应用程序开发 实现MVVM模式 进击的MVVM 组合式用户界面 导航 松耦合组 ...
- Prism开发人员指南5-WPF开发 文档翻译(纯汉语版)
2014四月 Prism以示例和文档的形式帮助你更简单的设计丰富灵活易维护的WPF程序.其中使用的设计模式体现了一些重要的设计原则,例如分离关注点和松耦合,Prism帮助你利用松耦合组件设 ...
- 1: 介绍Prism5.0(纯汉语版)
Prism帮助更简单的设计丰富,灵活,易维护的WPF桌面程序.其中使用MVVM,组合式视图,事件聚合等设计模式.这很符合一些重要的架构设计及原则.帮助你创建一个模块化的应用程序——可以独立开发松耦 ...
- 2: 使用Prism初始化程序(纯汉语版)
本篇内容讲解了Prism应用程序启动和运行都发生了什么.一个Pris应用程序在程序启动期间需要注册和配置——这被叫做引导应用程序.Prism引导过程包括创建和配置一个模块目录,创建一个例如Unity的 ...
- 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 下载并安装 ...
- 下载并安装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 ...
- VS2015预览版中的C#6.0 新功能(二)
VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性 以前自动属性必须同时提供setter和getter方法,因而只读属性只能通 ...
随机推荐
- Linux(8)- nginx+uWSGI+virtualenv+supervisor 发布web服务器
一.理论梳理 WSGI是web服务器的网关接口,它是一个规范,描述了web服务器(下图中的WEB server)如何与web应用程序(下图中的Application)通信,以及web应用程序如何链接在 ...
- ansible判定文件或者文件夹是否存在
ansible 的常用模块中没有判定当文件存在或者不存在时,执行某个执行 使用下面方法能简单判定某个文件是否存在 --- - name: judge a file or dir is exits sh ...
- 10046 trace详解(2)--tkprof
10046或10053生成的文件格式比较乱,直接查看有一定的困难,ORACLE自带的一个格式化命令工具tkprof可以将生成的.trc文件进行格式化,具体用说如下: 一.直接输入tkprof不带任 ...
- 微信小程序组件progress
基础内容progress:官方文档 Demo Code: Page({ data:{ percent:0 }, onReady:function(){ this.percentAdd(); }, pe ...
- 转:Oracle中的日期和字符串互相转换
TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显 ...
- eclipse 安装 spring boot suite 插件遇到的问题
问题:安装失败,报如下错误: An error occurred while collecting items to be installedsession context was:(profile= ...
- 一个linux命令(6/12):cat 命令
cat主要有三大功能:1.一次显示整个文件.$ cat filename2.从键盘创建一个文件.$ cat > filename 只能创建新文件,不能编辑已有文件.3.将几个文件合并为一 ...
- zoj2432
/* 首先,dp的最开始是定义状态 dp[i][j] 表示A串的前i个,与B串的前j个,并以B[j]为结尾的LCIS 的长度. 状态转移方程: if(A[i]==B[j]) dp[i][j]=max( ...
- toLatin1 toLocal8Bit
toLatin1.toLocal8Bit都是QString转QByteArray的方法,Latin1代表ASCII,Local8Bit代表unicode
- CentOS限制SSH登录地址
编辑hosts.allow文件,将允许连接的地址写进去 [root@Elements ~]# vim /etc/hosts.allow sshd:10.10.10.1:allow sshd:172.1 ...