zoukankan      html  css  js  c++  java
  • 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 跨平台类库包含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升级.

     
  • 相关阅读:
    C#中 ??、 ?、 ?: 、?.、?[ ] 问号各组合含义
    ASP.NET Core MVC配置差异(3.0和2.X)
    vs code搭建Django环境
    解决真机编译出现System.DllNotFoundException: 'libmono-native.so'错误都方法
    选择器
    Web.Config配置
    读Xamarin文档记录
    【前端自动化】Gulp的使用(一):安装gulp
    关于angularJS绑定数据时自动转义html标签
    【记录】两年程序生涯的点滴与反思
  • 原文地址:https://www.cnblogs.com/DoubleChen/p/3682528.html
Copyright © 2011-2022 走看看