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 跨平台类库包含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升级.

 
下一篇 |  前一篇 |  主页 |  社区

转载于:https://www.cnblogs.com/DoubleChen/p/3682528.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值