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

我很在意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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA高级架构开发

使用 CodeMirror 打造属于自己的在线代码编辑器

写这个的目的是因为之前项目里用到过 CodeMirror,觉得作为一款在线代码编辑器还是不错,也看到过有些网站用到过在线代码编辑,当然我不知道他们是用什么做的,...

45800
来自专栏大数据钻研

如何优雅地使用Sublime Text3

Sublime Text:一款具有代码高亮、语法提示、自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受。相比...

2.2K60
来自专栏码生

ReactNative 面试题

今天有一个 ReactNative 的面试。 时间紧迫,临时写了几个问题,初级面试问题。 都是关键字

1.1K30
来自专栏iOS122-移动混合开发研究院

PureLayout,使用纯代码写AutoLayout

? ? ? ? ? ? 为iOS和OS X的自动布局最终的API -- 令人印象深刻的简单,非常强大。 PureLayout延伸的UIView /NSView...

33270
来自专栏TechBox

跟着官方文档学习3D Touch前言(一)app外3D Touch—Home Screen Quick Actions(二)app内的3D Touch - Peek and Pop名词解释

26440
来自专栏python学习之旅

python appium笔记(二):元素定位

#这里的示例是用android来说明的,xpath应该是通用的,resource-id不太清楚,没配过IOS的环境

27110
来自专栏Kiba518

【我们一起写框架】MVVM的WPF框架之绑定(二)

上一篇我们已经一起编写了框架的基础结构,并且实现了ViewModel反向控制Xaml窗体。

17320
来自专栏技术之路

Qt5 新特性

Qt 5 已经临近发布,其最大的特点就是模块化。将原来庞大的模块更细分为不同的部分,同时,一个大版本的升级,当然少不了添加、删除各个功能类。文本简单介绍 Qt5...

43480
来自专栏落影的专栏

iOS开发笔记(八)---- 键盘、静态库、动画、Crash定位

42790
来自专栏熊二哥

Sublime快速入门

在当前的互联网时代,任何程序语言和相关技术都只是实现互联网应用的一种手段,这也就造成了大量的互联网工程师长期与不同的语言、技术、系统环境、IDE等打交道。因此一...

20650

扫码关注云+社区

领取腾讯云代金券