【翻譯】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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM