快速掌握WPF類層次含義
WPF在實(shí)際使用中,往往會(huì)用到各種各樣的類。但是,當(dāng)我們?cè)谙嚓P(guān)資料中去尋找這些類的應(yīng)用時(shí),會(huì)發(fā)現(xiàn)是一個(gè)非常麻煩的事情。對(duì)于一個(gè)開發(fā)人員來說,必須牢固掌握WPF類層次的相關(guān)概念。如圖2顯示了WPF類層次。
如圖2所示,WPF類層次中主要包括:System.Threading.DispatcherObject、System.Windows.DependencyObject、System.Windows.Media.Visual、System.Windows.UIElement、System.Windows.FrameworkElement和System.Windows.Controls.Control。這些內(nèi)容與PresentationFramework、PresentationCore有關(guān),其中FrameworkElement和Control屬于PresentationFramework,其余的類屬于PresentationCore。#t#
下面簡(jiǎn)單說明一下這些WPF類層次,建議讀者在了解類的同時(shí),要注意它們之間的交互關(guān)系:
System.Threading.DispatcherObject WPF中有許多類繼承自DispatcherObject,DispatcherObject提供了處理同步和并發(fā)的基本構(gòu)造。WPF建立在dispatcher提供的消息系統(tǒng)之上。它的工作方式很像win32中的消息泵;事實(shí)上,WPF的dispatcher使用User32消息來實(shí)現(xiàn)線程間調(diào)用。
System.Windows.DependencyObject 構(gòu)建WPF的一個(gè)主要思想是屬性優(yōu)先于方法和事件。屬性是聲名性的,并且能夠更方便實(shí)現(xiàn)開發(fā)人員。WPF提供了豐富的屬性系統(tǒng),其核心是DependencyObject。它的基礎(chǔ)是屬性表達(dá)式。屬性系統(tǒng)提供對(duì)屬性的稀疏保存。
System.Windows.Media.Visual Visual是一個(gè)抽象類,每個(gè)FrameworkElement對(duì)象都必須繼承該類。該類的主要作用是為WPF提供呈現(xiàn)支持,主要包括輸出顯示,坐標(biāo)轉(zhuǎn)換,區(qū)域剪切等。以用戶界面控件(例如Button,TextBox)為例,這些控件都繼承Visual類,并使用該類定義的屬性實(shí)現(xiàn)所呈現(xiàn)數(shù)據(jù)的持久化。
System.Windows.UIElement UIElement是構(gòu)建WPF元素和基本呈現(xiàn)特征的基類。該類繼承自Visual類,其中定義很多與輸入和焦點(diǎn)有關(guān)的特性,例如鍵盤事件,鼠標(biāo)和筆輸入。同時(shí),該類還包括一些與WPF事件模型有關(guān)的API。
System.Windows.FrameworkElement FrameworkElement類是連接Framework層次類與Core層次類的連接點(diǎn)。該類不僅繼承了UIElement類,而且還添加了一些功能,例如,布局定義、邏輯樹、對(duì)象生命周期事件、支持?jǐn)?shù)據(jù)綁定和動(dòng)態(tài)資源引用、支持樣式和動(dòng)畫。
System.Windows.Controls.Control Control是創(chuàng)建自定義應(yīng)用程序控件的基類。開發(fā)人員可通過重寫Control類所提供的屬性,方法,事件等,為自定義控件添加自定義邏輯。
相信以上內(nèi)容對(duì)于讀者了解WPF類層次會(huì)有一定幫助,但是只了解這些是顯然不夠的。作為一名合格WPF開發(fā)人員,必須熟悉其他細(xì)小,更為常用的WPF類。