我很在意WPF的发展,有人说微软不再维护WPF了,无所谓,随他去。

MSDN上有简体版:http://msdn.microsoft.com/zh-cn/library/vstudio/bb613588.aspx,但翻译的有点糟糕

英文原文地址:http://msdn.microsoft.com/library/vstudio/bb613588

下面是我的翻译:

Ribbon Control:

WPF4.5包含Ribbon control;Ribbon control包含快速访问工具栏,系统菜单栏和标签页。

获取更多信息,请查看Ribbon Overview

显示大量分组数据性能提升:

当屏幕上需要呈现大量的分组数据时,UI可以进行界面虚拟化。

VirtualizingPanel类定义了IsVirtualizingWhenGrouping属性。

这个属性可以使UI在呈现分组数据时进行界面虚拟化。

如果你想了解分组数据的更多信息,

请看:“怎样用xaml为分组数据排序”(译注:这个MSDN上就没给出链接)

如果你想了解虚拟化呈现分组数据的的相关信息

请看:“IsVirtualizingWhenGrouping”扩展属性的相关内容

针对VirtualizingPanel的新特性

1.

你可以使用ScrollUnit附加属性来指定一个VirtualizingPanel(VirtualizingStackPanel)显示部分的数据项

如果ScrollUnit被设置为Item,VirtualizingPanel将只显示容器内的可见的数据项。

如果ScrollUnit被设置为Pixel,VirtualizingPanel将显示呈现在屏幕上的那一部分。(译注:这两句的内容有待验证)

2.

你可以使用CacheLength附加属性来指定VirtualizingPanel的缓存大小(呈现前和呈现后都可以指定)

这个缓存是VirtualizingPanel不适用虚拟化的方式呈现数据之前或之后的缓存空间

使用缓存是为了避免在用户滚动滚动条时呈现界面元素。以此提示用户滚动滚动条时界面的响应速度。

.NET在分配这个缓存时使用了一个较低的优先权。以免用户在操作系统时界面反应迟钝。

VirtualizingPanel.CacheLengthUnit属性标志这缓存大小的单位

绑定到静态属性

WPF支持绑定到静态属性,

数据绑定引擎监控静态属性,一旦静态属性的值发生改变,将会触发一个指定的事件

例如:

如果有一个类,取名叫做SomeClass;

它有一个静态属性,取名叫做MyProperty;

在这个类内部可以按如方式定义静态事件:

public static event EventHandler MyPropertyChanged;

当MyProperty的值改变时,这个事件将被触发。

注意:

第一:事件的名字必须为:[静态属性名]changed

第二:SomeClass类必须包含一个名为StaticPropertyChanged的事件(定义方式如下),

public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;

在非UI线程访问集合

你可以在一个非UI线程中访问和修改UI线程中的集合数据。

这样你就可以使用后台线程从UI线程中接收数据。

当你使用另一个线程修改数据集合的时候,展现在用户界面上的数据也会被相应的修改。

验证数据正确性

你可以使用INotifyErrorInfo接口来给数据实体类定义验证规则,

这个接口会异步验证用户录入的信息,并把结果展现在界面上。

这个接口也支持自定义错误对象,在一个属性上定义多个验证逻辑,跨属性的验证逻辑(译注:一个属性的值导致另一个属性验证不通过)

还有实体层面的错误(译注:enty-level errors这一句不知道是什么意思)

要想了解更多信息,请看:http://msdn.microsoft.com/en-us/library/vstudio/system.componentmodel.inotifydataerrorinfo

延迟更新数据绑定的数据源

如果你使用数据绑定来更新数据源,那么你可以使用delay属性来指定多久之后,把数据的更改通知数据源。

例如:你有一个slider,它的值双向绑定到一个数据源,并且UpdateSourceTrigger属性被设置为PropertyChanged

这样当一个用户滑动这个slider的时候,slider滑块的位置每改变一个像素,数据源都要发生相应的更改。

其实,我们只需要在slider停止滑动的时候更新数据源就可以了。

为了避免数据源被频繁的更新,可以使用delay属性来解决这个问题(译注:这里是挺长的一句,懒得翻译了)。

绑定到实现了ICustomTypeProvider接口的类型

WPF支持绑定到ICustomTypeProvider的继承类型,

1.可以绑定到PropertyType类型的属性,例如,可以把Path属性可以绑定到一个自定义类型

2.可以绑定到一个DataType类型的属性

3.作为一个可以决定DataGrid中自动生成的列的属性

----------------------------------------------

还有一些特性没有翻译,下一篇再翻译吧

另外有一个专家唱衰WPF,地址看这里:http://www.infoq.com/articles/Win8-LOB-Options

【翻译】WPF4.5新特性(MSDN的翻译读不太懂)的更多相关文章

  1. WPF4.5新特性(MSDN的翻译读不太懂)

    WPF4.5新特性(MSDN的翻译读不太懂) 1. 新的Doctype声明 XHTML的声明太长了,我相信很少会有前端开发人员能手写出这个Doctype声明. <!DOCTYPE html PU ...

  2. 【转载】《Ext JS 4 First Look》翻译之一:新特性

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:^_^肥仔John      原文地址:http://www.cnblogs. ...

  3. Swift 2.2 的新特性

    导读:本文来自SwiftGG翻译组,作者@walkingway基于苹果Swift官方博客中Ted Kremenek所撰写的"Swift 2.2 Released!"文章进行了关于S ...

  4. Java1.0-1.12各个版本的新特性

    JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢. JDK Version 1.1 1997- ...

  5. 2017 css新特性

    2017年要学习的三个CSS新特性 这是翻译的一篇文章,原文是:3 New CSS Features to Learn in 2017,翻译的不是很好,如有疑问欢迎指出. 新的一年,我们有一系列新的东 ...

  6. Java8 的一些新特性总结

    目前Java8已经发布很多个版本了,对于Java8中的新特性虽然有各位大神进行jdk8的英文特性文档翻译,但都太官方化语言,对照几篇翻译本人对新特性文档做一下总结,以帮助我和各位不了解Java8新特性 ...

  7. [转]JDK1.0到12各版本新特性

    原文链接 JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢.JDK Version 1.1 1 ...

  8. [翻译] C# 8.0 新特性 Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南) 【由浅至深】redis 实现发布订阅的几种方式 .NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐

    [翻译] C# 8.0 新特性 2018-11-13 17:04 by Rwing, 1179 阅读, 24 评论, 收藏, 编辑 原文: Building C# 8.0[译注:原文主标题如此,但内容 ...

  9. [翻译] C# 8.0 新特性

    原文: Building C# 8.0 [译注:原文主标题如此,但内容大部分为新特性介绍,所以意译标题为 "C# 8.0 新特性"] C# 的下一个主要版本是 8.0.我们已经为它 ...

随机推荐

  1. LibreOJ #6014. 「网络流 24 题」最长 k 可重区间集

    #6014. 「网络流 24 题」最长 k 可重区间集 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   ...

  2. python 03 字符串详解

    1.制表符 \t str.expandtabs(20) 可相当于表格 2.def   isalpha(self) 判断是否值包含字母(汉字也为真),不包含数字 3.def   isdecimal(se ...

  3. VirtualBox 克隆后 IP 地址相同(DHCP 分配),如何变更MAC以获取不同的IP?

    由于需要做实验需要两个相同环境的虚拟机,在linux下使用virtualbox最小化安装centos6.0,并克隆了一个相同的,联网模式为桥接,修改配置文件之后重启网络发现二者的网络信息相同,所获取的 ...

  4. SPOJ - AMR11B

    题目链接:https://www.spoj.com/problems/AMR11B/en/ 题目大意就是要你求图形覆盖的格点数,标记每个图形里的未标记格点(包括边界),总标记数就是覆盖的总格点数. # ...

  5. Python踩坑之 sys.argv[-1]代表什么

    平台:win10+python 3.7.0 一.sys说明: sys.argv这个函数是我们写python脚本中最常用的一个函数. sys是Python的一个「标准库」,也就是官方出的「模块」,是「S ...

  6. lua的table转为excel表格的方法

    项目中需要用到转表工具,由于没有直接的转表工具,而且嵌套的table(table里面嵌套了多层表格与数组).无奈之下,只好采用折衷的方法,先将table表格转为json数据,再用在线转表工具将json ...

  7. Java中equals方法简略描述

    所有类都从Object中继承了equals方法,源码:public boolean equals(Object o){return this == o;} 直接判断this与o本身是否为同一对象(是否 ...

  8. vue全局后置钩子afterEach

    beforeEach是路由跳转前执行的,afterEach是路由跳转后执行的. afterEach只有两个参数  afterEach((to,from)=>{}) 例子: router.afte ...

  9. 美团codeM预赛A轮 倒水

    [编程题] 倒水 时间限制:1秒 空间限制:32768K 有一个大水缸,里面水的温度为T单位,体积为C升.另有n杯水(假设每个杯子的容量是无限的),每杯水的温度为t[i]单位,体积为c[i]升. 现在 ...

  10. Android studio 中的TabWidget

    1.TabWidget 的 layout文件 <?xml version="1.0" encoding="utf-8"?> <TabHost ...