WPF樹應用相關(guān)技巧總結(jié)
WPF樹應用是一個非常重要的知識點。這一知識,需要我們在學習WPF的過程中放在重點學習,以方便將來的應用。在許多技術(shù)中,元素和組件按照樹結(jié)構(gòu)的形式組織,在這種結(jié)構(gòu)中,開發(fā)人員可以直接操作樹來影響應用程序的呈現(xiàn)。#t#
Windows Presentation Foundation (WPF) 還使用了多個樹結(jié)構(gòu)術(shù)語來定義程序元素之間的關(guān)系。
在WPF樹應用項目中,我們要使WPF應用程序多語言。那么就要了解要多語言的內(nèi)容在xaml文件中的位置。那么我們必須要讀取xaml文件信息。
WPF 中主要的樹結(jié)構(gòu)是元素樹。如果使用 XAML 創(chuàng)建應用程序頁,則將基于標記中元素的嵌套關(guān)系創(chuàng)建樹結(jié)構(gòu)。如果使用代碼創(chuàng)建應用程序,則將基于為屬性(實現(xiàn)給定元素的內(nèi)容模型)指定屬性值的方式創(chuàng)建樹結(jié)構(gòu)。在 Windows Presentation Foundation (WPF) 中,處理和使用概念說明元素樹的方法實際上有兩種:即邏輯樹和可視化樹。邏輯樹與可視化樹之間的區(qū)別并不始終很重要,但在某些 WPF 子系統(tǒng)中它們可能會偶爾導致問題,并影響您對標記或代碼的選擇。
盡管您不會始終直接操作邏輯樹或可視化樹,但理解樹之間如何進行交互的概念也是理解 WPF 中的屬性繼承和事件路由如何工作的一種方法。
WPF樹應用是在xml的標準上實現(xiàn)的,它有兩種方法處理元素樹(邏輯樹、可視樹)。而在查找資源時我們通常使用邏輯樹。在代碼中,我們要讀取xaml文件,我們要解剖window對象。然后一成一成的分析window里面的子對象。
Windows Presentation Foundation (WPF) 中的大部分類都從四個類派生而來,這四個類在 SDK 文檔中常常被稱為基元素類。這些類包括 UIElement、FrameworkElement、ContentElement 和 FrameworkContentElement。DependencyObject 也是一個相關(guān)類,因為它是 UIElement 和 ContentElement 的通用基類。
UIElement 和 ContentElement 都是從 DependencyObject 派生而來
重點:Window對象也是DependencyObject類型。
1、遞歸window對象里面的子對象
- IEnumerable ienum =
this.GetChildren(WindowObj);- foreach (object obj in ienum)
- {
- DependencyObject
childVisual = obj as
DependencyObject;- ......
2、分析每個對象
- switch (obj.GetType().
FullName)- {
- case "System.Windows.
Controls.Label":- string labelContent=
(obj as Label).Content;- break;
- ......
3、LogicalTreeHelper 類
這個類為邏輯樹遍歷提供 GetChildren、GetParent 和 FindLogicalNode 方法。不清楚FindName是不是其中的一個。在使用FindName時,你可能發(fā)現(xiàn)FindName無效,那么可能是你動態(tài)添加控件的時候是否注冊了控件
- (parentObj.RegisterName
(objname,obj)).
以上就是我們對WPF樹應用的理解,希望對大家有所幫助。