WPF 4 5中對繫結的改善

2021-09-08 02:28:25 字數 921 閱讀 2136

儘管wpf已經不再是明星產品,但它在windows富客戶端開發中的地位還是舉足輕重。它擁有對.net類庫以及底層作業系統完全的訪問許可權,沒 有任何其他html或者基於.net的使用者介面技術能夠與之相提並論。微軟意識到了它的重要性,並將繼續對其投資以做出改善,特別是對其繫結 (binding)功能。

首先是支援通過類名與靜態屬性繫結。語法和一般的繫結有少許不同。pete brown解釋說:

你會注意到,我們是對繫結語法做出了修改。你會用括號把命名空間、類和屬性括起來,因為正如sam bent曾經和我說過「它們告訴我們要把路徑解析為classname.propertyname而不是propertyname.propertyname。」

由於對屬性的繫結經常需要變更通知(change notifications),所以wpf 4.5提供了兩種設計模式。第一種是建立形式為「public static event eventhandler [propertyname]changed」的一次性事件。如果需要監控多個屬性,那麼就要使用一般目的的事件。這會使用「public static event eventhandler staticpropertychanged」的形式來宣告。

另一種在wpf 4.5中增加的特性是延遲繫結(delay binding)。一般資料變更會立刻從控制器推給模型。當設定了延遲時,直到使用者在指定的時間段內不再做變更,更新的值才會推給模型。pete提供了一些示例,還指出:

這種特性另乙個有用的地方在於,你可以把資料繫結在想要捕獲遞增變更的textbox上,但此時消耗的資源(例如一次搜尋)在某種程度上比較高。在那種情況下,你可以稍微暫停等待一下,比方說在按鍵之間加100毫秒的等待,然後再執行搜尋。

檢視英文原文:binding enhancements in wpf 4.5

WPF 4 5對於多執行緒下的繫結支援

wpf資料繫結對於多執行緒的支援一直都沒什麼具體計畫。當物件在非ui執行緒上發出了屬性變化事件時,資料繫結基礎設施就會對其作出響應。通常這是可行的,但因為潛在的競態條件,這麼做並不是真正安全的。從電腦科學的視角來看,禁用跨執行緒的訪問是更為正確的做法,因為這才是導致集合變化事件的根源。但遺憾的是,開...

WPF中ListBox的繫結

wpf中列表式控制項派生自itemscontrol類,繼承了itemssource屬性。itemssource屬性可以接收乙個ienumerable介面派生類的例項作為自己的值 所有可被迭代遍歷的集合都實現了這個介面,如陣列 list等 每乙個 itemscontrol的派生類都有自己的條目容器,如...

WPF中的DataTemplate繫結使用的場合

wpf讓程式設計師欣喜的是支援資料驅動,原來的winform和mfc是屬於事件驅動,資料驅動的好處是,無需在ui上發生變化,才被通知到去怎麼做,而是發現資料發生了變化,我就可以去處理了,資料可以讓兩個元素同時擁有,這樣就不用找觸發的控制項去處理事件,只需要知道資料發生變化了我就可以去做這件事了。da...