【翻译】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包含快速访问工具栏,系统菜单栏和标签页。

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

目录
相关文章
|
2月前
|
文字识别 C# 开发者
WPF开源的一款免费、开箱即用的翻译、OCR工具
WPF开源的一款免费、开箱即用的翻译、OCR工具
|
C# Windows
利用WPF创建含多种交互特性的无边框窗体
原文:利用WPF创建含多种交互特性的无边框窗体 咳咳,标题一口气读下来确实有点累,让我先解释一下。另外文章底部有演示程序的下载。
1220 0
|
C#
在WPF中添加3D特性
原文:在WPF中添加3D特性 35.4  在WPF中添加3D特性 本节介绍WPF中的3D特性,其中包含了开始使用该特性的信息。 提示: WPF中的3D特性在System.Windows.Media.Media3D命名空间中。
970 0
|
数据可视化 C# 前端开发
WPF中的3D特性和常见的几个类
原文:WPF中的3D特性和常见的几个类 WPF 3D 常用的几个类及其关系 1.  Visual 类      所有二维可视化元素的基类,为 WPF 中的呈现提供支持,其中包括命中测试、坐标转换和边界框计算。
1181 0
|
C#
在编写wpf界面时候中出现如下错误: 类型引用不明确。至少有两个名称空间(“System.Windows”和“System.Windows”)中已出现名为“VisualStateManager”的类型。请考虑调整程序集 XmlnsDefinition 特性。
原文:在编写wpf界面时候中出现如下错误: 类型引用不明确。至少有两个名称空间(“System.Windows”和“System.Windows”)中已出现名为“VisualStateManager”的类型。
967 0
|
C#
【msdn wpf forum翻译】如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点?
原文:【msdn wpf forum翻译】如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点?原文链接:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/cf884a91-c135-447d-b16b-214d2d9e9972 有时有些特殊的程序需要这样处理。
965 0
|
C#
【msdn wpf forum翻译】获取当前窗口焦点所在的元素
原文:【msdn wpf forum翻译】获取当前窗口焦点所在的元素原文地址: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/6bd7a03a-f0b4-42df-a7f2-5182cf003cb0 Bialgous回答:IInputElement focusedElement = FocusManager.
954 0
|
C#
【msdn wpf forum翻译】TextBlock等类型的默认样式(implicit style)为何有时不起作用?
原文:【msdn wpf forum翻译】TextBlock等类型的默认样式(implicit style)为何有时不起作用?原文链接:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/148e95c6-6fb5-4399-8a56-4...
957 0
|
C#
【msdn wpf forum翻译】TextBox中文本 中对齐 的方法
原文:【msdn wpf forum翻译】TextBox中文本 中对齐 的方法原文链接:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/49864e35-1dbf-4292-a361-93f1a8400558 问题:TextBox中文本中对齐,使用 TextBox.HorizontalContentAlignment="Center"行不通(TextBox.VerticalContentAlignment="Center"则会起到预期的作用。
1217 0