新聞中心
WPF元素樹(shù)是WPF中一個(gè)非常重要的結(jié)構(gòu)。在初學(xué)者學(xué)習(xí)使用WPF的時(shí)候,需要深入的了解這一結(jié)果,才能方便以后的熟練操作。#t#

專注于為中小企業(yè)提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)臨潼免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
如果使用 XAML 創(chuàng)建應(yīng)用程序頁(yè),則將基于標(biāo)記中元素的嵌套關(guān)系創(chuàng)建樹(shù)結(jié)構(gòu)。
如果使用代碼創(chuàng)建應(yīng)用程序,則將基于為屬性(實(shí)現(xiàn)給定元素的內(nèi)容模型)指定屬性值的方式創(chuàng)建樹(shù)結(jié)構(gòu)。
在 Windows Presentation Foundation (WPF) 中,處理和使用概念說(shuō)明元素樹(shù)的方法實(shí)際上有兩種:即邏輯樹(shù)和可視化樹(shù)。
WPF元素樹(shù)之邏輯樹(shù)用途
邏輯樹(shù)的存在用途是使內(nèi)容模型可以容易地循環(huán)訪問(wèn)其可能包含的子元素,從而可以對(duì)內(nèi)容模型進(jìn)行擴(kuò)展。此外,邏輯樹(shù)還為某些通知提供了框架,例如當(dāng)加載邏輯樹(shù)中的所有元素時(shí)。
此外,在 Resources 集合的邏輯樹(shù)中首先向上查找初始請(qǐng)求元素,然后再查找父元素,這樣可以解析資源引用。當(dāng)同時(shí)存在邏輯樹(shù)和可視化樹(shù)時(shí),將使用邏輯樹(shù)進(jìn)行資源查找。
WPF元素樹(shù)之可視化樹(shù)
WPF 中除了邏輯樹(shù)的概念,還存在可視化樹(shù)的概念??梢暬瘶?shù)描述由 Visual 基類表示的可視化對(duì)象的結(jié)構(gòu)。為控件編寫模板時(shí),將定義或重新定義適用于該控件的可視化樹(shù)。對(duì)于出于性能和優(yōu)化原因想要對(duì)繪圖進(jìn)行較低級(jí)別控制的開(kāi)發(fā)人員來(lái)說(shuō),他們也會(huì)對(duì)可視化樹(shù)感興趣。作為常規(guī) WPF 應(yīng)用程序編程一部分的可視化樹(shù)的一個(gè)公開(kāi)情況是,路由事件的事件路由大多數(shù)情況下遍歷可視化樹(shù),而不是邏輯樹(shù)。這種微妙的路由事件行為可能不會(huì)很明顯,除非您是控件作者。在可視化樹(shù)中路由使得在可視化級(jí)別實(shí)現(xiàn)組合的控件能夠處理事件或創(chuàng)建事件 setter。
WPF元素樹(shù)之樹(shù)遍歷
LogicalTreeHelper 類為邏輯樹(shù)遍歷提供 GetChildren、GetParent 和 FindLogicalNode 方法。在大多數(shù)情況下,不需要遍歷現(xiàn)有控件的邏輯樹(shù),因?yàn)檫@些控件幾乎總是將其邏輯子元素公開(kāi)為專用集合屬性,該屬性支持集合 API(如 Add、索引器等等)。對(duì)于不選擇從預(yù)期控件模式(例如已定義了集合屬性的 ItemsControl 或 Panel)派生以及打算提供其自己的集合屬性支持的控件作者,樹(shù)遍歷主要是他們使用的一種方案。
可視化樹(shù)還支持用于可視化樹(shù)遍歷的幫助器類 VisualTreeHelper。無(wú)法通過(guò)控件特定的屬性方便地公開(kāi)可視化樹(shù),因此,如果您的編程方案必須遍歷可視化樹(shù),建議您使用 VisualTreeHelper 類。
WPF元素樹(shù)之“樹(shù)”形式路由事件的路由
如前所述,路由事件的路由可有效地向上遍歷或向下遍歷樹(shù),這要取決于該事件是隧道路由事件還是冒泡路由事件。事件路由概念沒(méi)有直接支持的幫助器類,因此無(wú)法使用這樣的類來(lái)獨(dú)立“遍歷”引發(fā)實(shí)際進(jìn)行路由的事件的事件路由。存在表示路由的類 EventRoute,但該類的方法通常僅供內(nèi)部使用。
WPF元素樹(shù)之資源和樹(shù)
資源查找基本上遍歷邏輯樹(shù)。不在邏輯樹(shù)中的對(duì)象可以引用資源,但查找將從該對(duì)象連接到邏輯樹(shù)的位置開(kāi)始。僅邏輯樹(shù)節(jié)點(diǎn)可以有包含 ResourceDictionary 的 Resources 屬性,因此這意味著,遍歷可視化樹(shù)來(lái)查找資源沒(méi)有好處。
但是,資源查找也可以超出直接邏輯樹(shù)。對(duì)于應(yīng)用程序標(biāo)記,資源查找可以向上繼續(xù),直到應(yīng)用程序資源以及主題支持和系統(tǒng)值。如果資源引用是動(dòng)態(tài)的,則主題本身也可以引用主題WPF元素樹(shù)之外的系統(tǒng)值。
當(dāng)前題目:WPF元素樹(shù)各種用途解析
當(dāng)前地址:http://m.5511xx.com/article/cdcihgj.html


咨詢
建站咨詢
