亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 擴展 > SilverLight > 正文

詳解Silverlight的對象樹

2024-09-06 20:41:34
字體:
供稿:網(wǎng)友

在托管代碼或 JavaScript 中,您可以在運行時期間引用 Silverlight 的 Silverlight 對象樹中的 對象。本主題介紹如何在 Silverlight 托管 API 中使用對象樹。

對象樹

對象樹概念描述如何使在運行時在 Silverlight 內(nèi)容中創(chuàng)建和存在的對象彼此相關(guān)。關(guān)系基于對象具 有屬性這一原則,在很多情況下屬性的值是另一個對象,而此對象也具有屬性。對象樹具有分支,因為其 中某些屬性是集合屬性并具有多個對象;并且,對象樹具有根,因為體系結(jié)構(gòu)最終必須引用單個對象,而 該對象是與對象樹之外的概念(例如,瀏覽器宿主或顯示內(nèi)容的 Silverlight 插件)之間的連接點。

盡管在概念上實際只有一個對象樹,但 Silverlight API 不向您公開完整的樹。大量的對象樹結(jié)構(gòu)實 際上是實現(xiàn)詳細信息。而您具有對象特定的屬性,這些屬性影響樹中特定點的子項值并且可能報告父項( 在大多數(shù)情況下,父軸是只讀的,因為您通常是在代碼中或通過 XAML 分析過程從根向上構(gòu)建樹)。例如 ,Panel 具有其 Children 屬性,該屬性設置子對象。FrameworkElement 具有用于報告父項的 Parent。 這兩個 API 都在基類中,因此,它們可用于大量的 Silverlight 對象。

Silverlight 中一個相關(guān)的樹概念是可視化樹。可視化樹概念指的是較大的對象樹在經(jīng)過編輯或篩選 后的表示形式。所應用的篩選器是在可視化樹中只存在具有呈現(xiàn)含義的對象。例如,某個集合類不是可視 化樹的一部分,而可視化樹將集合抽象為一個“子項”概念。然而,如果您將加載的源 XAML 標記視為與 對象樹近似的結(jié)構(gòu),則可視化樹也可以包含并不直接顯示的對象。這是因為,可視化樹也報告作為特定控 件(這些控件來自所應用的控件模板或資源字典)的組成部分的對象??梢暬瘶湓趦?nèi)部用于 Silverlight 呈現(xiàn)過程,但了解一些有關(guān)可視化樹的內(nèi)容對于某些情形通常很重要,例如,在應用模板后編寫或替換控 件模板或在運行時分析控件實例。對于這些情形,Silverlight 提供了 VisualTreeHelper API,它通過 一種方式檢查可視化樹,這種方式比您通過對象特定的父屬性和子屬性來實際實現(xiàn)更為一般化。

可視化樹概念也存在于 WPF 中,它與 Silverlight 的可視化樹概念類似。然而,一個顯著的差異是 WPF 還提供一個附加的篩選器或?qū)ο髽洌ǚQ為“邏輯樹”)的概念。邏輯樹概念與某些屬性系統(tǒng)行為相關(guān) 。Silverlight 不通過幫助器類來公開此邏輯樹。Silverlight 中的確存在某些(但并非所有)相關(guān)的屬 性行為,但由于沒有用于訪問這些行為的幫助器 API,因此,邏輯樹概念在 Silverlight 中將沒有用武 之地,因此本文檔不討論它。缺少邏輯樹而引發(fā)的一個很小的兼容性問題是:FrameworkElement.Parent 屬性行為在 Silverlight 版本 3 中是不同的,它實際上報告可視化樹父項。

對象樹和 XAML 標記

如果您將通過 Silverlight API 訪問的對象樹與 XAML 標記的樹形狀進行比較,它們在節(jié)點方面并不 完全匹配。這是因為 XAML 用于標記,并且在標記定義期間易于使用。例如,XAML 具有屬性元素的概念 ,它提供相關(guān)的指導信息,當您發(fā)現(xiàn)一個元素嵌套在另一個元素內(nèi)時,您可以選擇要設置的屬性。在對象 樹中,這就像一個對象上的某個屬性由另一個對象進行設置一樣。相反,XAML 也具有內(nèi)容屬性的概念, 其中,所設置的屬性在標記中甚至沒有顯式進行命名。XAML 具有的語法可以基于屬性的字符串值創(chuàng)建對 象,也可以針對 XAML 標記中已存在但在其他位置定義的對象提供引用,或者完全位于標記外部。盡管存 在這些很小的不一致,但當您在 XAML 中定義用戶界面時,您將在運行時定義最終 Silverlight 對象樹 的近似結(jié)構(gòu)。

引用對象屬性

無論您通過何種方式從 Silverlight 對象樹中獲取對象引用,都將通過 object.property 表示法( 與 .NET 中 CLR 屬性的核心概念相關(guān))直接公開托管 API 中的屬性。許多 Silverlight 2 屬性的基礎(chǔ) 是依賴項屬性概念。依賴項屬性和屬性系統(tǒng)引入了一些其他可能的語法,用于通過與 object.property 不同的方式訪問屬性,但與附加屬性的情況不同,這些屬性并不常用,因此本主題不討論它們。主題依賴 項屬性概述中詳細討論了依賴項屬性。

對象樹中的附加屬性

Silverlight 支持附加屬性的概念。從對象樹的角度來看,附加屬性是可以附加到樹中任何對象的屬 性,而不考慮該對象的類型(盡管在 Silverlight 實現(xiàn)中,該對象至少必須是依賴項對象)。附加屬性 值存在于對象樹中,但是,如果您使用代碼來訪問它們,則必須使用與 object.property 表示法不同的 語法。

對象樹中的資源和模板

Silverlight 支持一個稱為資源字典的資源概念。資源字典用于指定自身需要大量子屬性設置的屬性值。

ResourceDictionary 最常見的方案是在 XAML 中定義 ResourceDictionary 元素,然后通過 XAML 屬 性 (attribute) 和 StaticResource 標記擴展將已定義的資源用作屬性 (property) 值。對于某些情況 ,可以共享此資源。例如,您可以定義一個 LinearGradientBrush(它在 ResourceDictionary 中包含多 個漸變停止點),然后將其應用于可視化設計中的多個 Brush 屬性(可能在位于不同頁的用戶界面中) 。

模板將按稍微不同的概念運行(無論是在頁級別還是在應用程序級別資源字典中定義,也無論是在 generic.xaml 中還是以內(nèi)聯(lián)方式)。模板自身是一個對象,但模板可能多次應用于可視化樹。在應用后 ,模板中的元素通常使用 TemplateBinding,這樣,就可以應用模板并仍然設置由模板化對象保留的特定 值。有關(guān)模板的基礎(chǔ)概念將在主題通過使用 ControlTemplate 自定義現(xiàn)有控件的外觀中討論。

遍歷對象樹

遍歷對象樹在對象模型中是一種通用的方法。遍歷樹意味著您可以使用針對包含對象引用子對象(通 常,這些是集合)或父關(guān)系的屬性(這通常是在集合內(nèi)完成的,并返回集合自身)。我們可以對此過程進 行粗略的說明:您調(diào)用一連串子屬性和父屬性(或可能調(diào)用幫助器方法)以導航對象樹的各個軸,直到您 檢索到包含您所查找的對象的值。

通常,您應該可以在 XAML 中針對 Silverlight 構(gòu)造您的內(nèi)容,這樣,您就不需要大量查詢樹的結(jié)構(gòu) 。為了避免需要遍歷樹,請在創(chuàng)建元素的 XAML 中對于 x:Name / Name 屬性向這些元素提供一個值。這 就創(chuàng)建了一個直接引用,該引用可用于標記從 XAML 編譯的類中,與遍歷樹相比,這種獲取對象的方法出 錯的可能性要低得多。

此外,如果您通過代碼構(gòu)造函數(shù)而不通過 XAML 加載來創(chuàng)建對象,則您應該能夠構(gòu)造您的代碼,以便 您可以定義私有字段或變量來在運行時保留對象引用(保留在類中,或在應用程序級別存儲為變量)。

然而,在某些情況下,向?qū)ο筇峁┟Q并在范圍中保留對象引用是不可能的,也是不切實際的。一個 此類方案是:您正在添加由用戶提供或通過數(shù)據(jù)綁定提供的動態(tài)內(nèi)容,而您無法預測所添加的項數(shù)或運行 時對象樹的結(jié)構(gòu)。另一個方案是檢查對于某個控件所應用的模板,或控件的某個組成部分。

警告說明警告:

Silverlight 通常支持“設置外觀”概念,也稱為重新設置控件樣式或控件重新模板化。尤其是,如 果您是控件作者且正在編寫控件的支持代碼,則假定特定的樹結(jié)構(gòu)可能很危險。因為大多數(shù)控件支持可設 置的模板(無論您是否已啟用多個特定的擴展點,如子部分樣式),所以,運行時可視化樹可能與通過所 應用的默認模板創(chuàng)建的樹不同。請參見通過使用 ControlTemplate 自定義現(xiàn)有控件的外觀。

用于遍歷“子項”和其他集合的 Try-catch 邏輯

如果您遍歷對象樹的要求涉及到查找某些對象,而這些對象所表示的集合未表示為可視化樹的一部分 ,則您可能需要編寫專用的函數(shù),以便嘗試查找與特定的命名模式或特定類的對象模型相匹配的 API。

向下(遠離根)遍歷對象樹的多個級別通常是可能的,只要您了解所包含的對象將具有集合的點。您 可能必須使用 try/catch 方法或其他等效方法來檢測這一點,即檢查 Children 是否存在以及 Count 是 否為非零值(此處的 Children 和 Count 是占位符,而不是文字 API;根據(jù) .NET 命名原則,Children 和 Count 剛好是這些類型的屬性的公共名稱,但根據(jù)對象及其對象模型,實際屬性可能具有不同的名稱 )。總體 Silverlight 對象模型中的某些集合包含在未命名為 Children 的屬性中。如果您知道您正在 遍歷到某個未命名為 Children 的特定集合屬性,則應在邏輯中說明此情況。

使用 VisualTreeHelper

VisualTreeHelper 是一個可用于遍歷對象樹的實用工具類。(可視化樹的概念已在本主題前面的“對 象樹”一節(jié)中介紹。)

因為您可以在運行時對可視化樹執(zhí)行操作,并且可以遍歷到模板部件,所以這可能是一種可用來檢查 模板組成情況的有用手段。此外,您可以檢查可能通過數(shù)據(jù)綁定填充的子集合,或者您的應用程序代碼可 能無法全部了解運行時對象樹的完整本質(zhì)的子集合。為此,您可以通過 GetChild 并將 GetChildrenCount 用作一個確定因素(確定樹節(jié)點是單個項還是應按計數(shù)進行迭代的“子項”集合)來 遍歷該樹。

遍歷模板內(nèi)容

除VisualTreeHelper 之外,可用來遍歷模板內(nèi)容的另一個方法是 GetTemplateChild。使用 GetTemplateChild 或遍歷模板內(nèi)容通常是必要的,因為 FindName 的行為由名稱范圍概念控制。在這種 情況下,模板內(nèi)容與對象樹的其他部分具有特意不同的名稱范圍,因為模板是共享的,如果不采用單獨的 名稱范圍,則在多次應用模板時會導致名稱沖突。GetTemplateChild 按其模板名稱范圍 x:Name 值查找 對象,同時從應用該模板的特定 Control 的更大對象樹范圍中遍歷。

Silverlight 對象和 HTML DOM

還有另一個對象模型可用于為 HTML 編寫腳本:HTML 文檔對象模型 (DOM)。然而,DOM 不會將 Silverlight 插件加載的內(nèi)容標識為 DOM 的一個完整部分。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
日韩黄色大片| 成人午夜视频一区二区播放| 黄页网址大全在线观看| 亚洲欧美日韩综合| 在线观看av网页| 亚欧色一区w666天堂| a屁视频一区二区三区四区| 国产精品综合二区| 97免费视频在线播放| 在线观看男女av免费网址| 激情久久婷婷| 国产字幕视频一区二区| 久久好看免费视频| 极品视频在线| 中文字幕免费看| 欧美高清性xxxx| www.天天射| 日韩1区2区日韩1区2区| 精品人妻一区二区三区香蕉| 九色porny在线观看| 1769免费视频在线观看| 日本精品在线观看| 久久国产精品亚洲人一区二区三区| 91麻豆精品国产91久久久久推荐资源| 欧美精品久久久久久久久久久| 欧洲久久久久久| 国产免费高清| 国产免费黄色av| 亚洲人成电影网站色www| 欧美大胆的人体xxxx| 精品伊人久久久| 日韩视频免费观看高清在线视频| 欧美裸体bbwbbwbbw| 日本xxxx裸体xxxx| 国产综合 伊人色| 亚洲精品自在在线观看| 欧美一区二区三区四区五区| 精品国内片67194| 国产激情小视频在线| 男人日女人bb视频| 成人看片在线| 4438国产精品一区二区| 欧美午夜精品电影| 亚洲福利二区| 久久www成人_看片免费不卡| 国产一区二区三区乱码| 天天噜噜噜噜噜噜| 天天在线视频色| 日韩高清在线免费观看| 搞av.com| 成年女人在线视频| 亚洲激情电影在线| 水中色av综合| 偷拍中文亚洲欧美动漫| 五月激情综合色| 韩国日本美国免费毛片| 国产人与zoxxxx另类91| 亚洲理论在线| 国产又粗又黄又猛| 色一区二区三区| 伊人国产精品视频| 91在线精品一区二区| 免费搞黄视频| 国产精品入口免费| 日韩午夜免费| 日韩一区在线免费观看| 国产精品久久久久久久牛牛| 久久久久国产精品一区| 亚洲日本理论电影| 性农村xxxxx小树林| 男人的天堂成人在线| 天堂成人娱乐在线视频免费播放网站| 国产成人免费在线观看| 香蕉视频免费版| 国产成人亚洲综合a∨婷婷图片| 激情综合网av| 欧美日韩国产精品专区| 久久久免费电影| 亚洲AV第二区国产精品| 视频欧美一区| 四虎成人免费在线| 日本高清一区二区视频| 国产极品人妖在线观看| 视频国产一区二区三区| 欧美精品国产精品久久久| 国产熟女一区二区三区四区| 午夜免费在线观看精品视频| 国产精品日韩精品在线播放| 日本成人在线免费视频| 国产一区在线免费| 欧美高清不卡在线| 国产精品资源站| 亚洲小说区图片区情欲小说| 伊人影院在线观看视频| 东京干手机福利视频| 亚洲高清av一区二区三区| 亚洲色图丝袜美腿| 蜜臀久久久久久久| 色一色在线观看视频网站| 国产精品美女久久久久高潮| 国产成人午夜电影网| 亚洲国产高清一区二区三区| 亚洲成人av资源网| 日本免费一区二区三区视频观看| 精品国产精品久久一区免费式| 欧美亚洲在线观看| 日韩在线视屏| 亚洲综合一区二区不卡| 亚洲国产日韩欧美在线99| 日韩av.com| 农民人伦一区二区三区| 国产毛片一区二区三区va在线| 97超级碰在线看视频免费在线看| 国产成人精品三级| 成人免费毛片在线观看| 国产成+人+综合+亚洲欧美| 国产精品99在线观看| 国产又色又爽又高潮免费| 欧美视频亚洲图片| 国产精品视频26uuu| 精品久久久91| 精品裸体舞一区二区三区| 欧美特黄a级高清免费大片a级| 国产日韩网站| 国产视频视频一区| 国产一区二区三区精品久久久| 尤物网址在线观看| 日本视频三区| 亚洲综合一区二区不卡| 侵犯稚嫩小箩莉h文系列小说| 国产l精品国产亚洲区在线观看| www.麻豆av| 日本不卡视频在线| 免费看涩涩视频软件| 强乱中文字幕av一区乱码| 中文字幕视频在线免费观看| 国产婷婷色综合av蜜臀av| 五月天婷婷导航| 一区二区三区在线免费| 自拍偷拍一区| 精品国产电影| 岛国中文字幕在线| 艳母动漫在线观看| 91午夜视频在线观看| 欧美xxxx黑人又粗又长密月| 国产精品18久久久久久首页狼| 黄色免费看网站| 精品国产鲁一鲁一区二区张丽| 久久久噜噜噜久久中文字幕色伊伊| 亚洲精品乱码久久久久久不卡| 亚洲男女一区二区三区| 美女网站视频在线| av免费在线观| 激情视频一区二区三区| 国产精品xxxx| 人人九九精品| 久久精品中文字幕一区| 亚洲日韩视频| 亚洲成av在线| 九九热精品免费视频| 不卡一区二区在线| 亚洲国产av一区| 黄色网址三级| 精品国产亚洲一区二区三区大结局| 国产三级一区二区| 美日韩精品免费| 日皮视频在线观看| 激情网站在线| 日本青青草视频| 欧洲一级在线观看| 精品人妻一区二区免费视频| 区日韩二区欧美三区| 手机看片日韩av| 伊人av在线com| 忘忧草精品久久久久久久高清| 人妻与黑人一区二区三区| 国产精品日本一区二区三区在线| 国产精品扒开腿做爽爽爽视频| 国产精品网曝门| 亚洲私拍视频| 国产一区第一页| 91在线不卡| 黄色片免费看| 成人小说亚洲一区二区三区| 四虎4hu新地址入口2023| 欧美福利一区| 日本xxxxwww| 男人亚洲天堂| 一区视频二区视频| 日韩啪啪网站| 日韩欧美手机在线| 久久精品欧美一区二区三区不卡| 丁香一区二区三区| 中文字幕一区二区人妻视频| 亚洲第一久久影院| 色噜噜狠狠成人网p站| 91九蝌蚪视频| 午夜黄色小视频| 免费黄色a级片| 在线观看一区二区三区视频| mm131丰满少妇人体欣赏图| 97精品在线| 国产主播性色av福利精品一区| 国产高清一区二区三区| 日韩第一区第二区| ...中文天堂在线一区| 99久久精品国产毛片| 日韩三级中文字幕| 色婷婷综合久久久久中文一区二区| 中文字幕一区二区人妻电影丶| 欧美三级 欧美一级| 中文字幕va一区二区三区| 国产精品久久久久久久一区二区| 亚洲熟女乱色一区二区三区久久久| 久久久999视频| wwwxxxx欧美| 日韩综合小视频| 调教视频免费在线观看| 五月婷婷丁香网| 四虎4hu影库永久地址| 男人网站在线观看| 国产毛片精品国产一区二区三区| 国产精品久久久久9999赢消| 国产美女搞久久| 91福利资源站| 欧美日韩一区二区三区四区| 天天艹天天操| 国产精品福利无圣光在线一区| 欧美综合激情网| 北条麻妃在线一区二区| 国产欧美日韩三区| 少妇荡乳情欲办公室456视频| 欧美二区三区91| 国产精品毛片av| 一区二区久久| 国产福利视频网站| 五月天婷婷社区| 深夜视频在线观看| 国内精久久久久久久久久人| www免费网站在线观看| 国产精品尤物福利片在线观看| 懂色aⅴ精品一区二区三区| 亚洲国产高清在线观看| 亚洲第一成肉网| 久久久久无码国产精品不卡| 亚洲自拍另类综合| 亚洲av无码国产精品永久一区| 国产精品一区二区三区四区五区| 青青操视频在线播放| 91视频国产资源| 宅男噜噜噜66一区二区66| 99在线观看精品视频| 欧美另类极限扩张| 老司机av在线免费看| 米奇精品关键词| 国产午夜亚洲精品理论片色戒| 欧美亚洲精品一区| 欧美人妻精品一区二区三区| 日韩三级小视频| 99久久免费观看| 51精品在线| 激情黄产视频在线免费观看| 牛牛电影国产一区二区| 性生活视频网址| 亚洲美女av电影| 国产真人无码作爱视频免费| 在线伊人电影| 在线免费观看成人| 色婷婷一区二区三区av免费看| 成年人网站在线观看免费| 无码人妻精品一区二区蜜桃色欲| 亚洲人成在线播放网站岛国| 九九热这里只有在线精品视| 97夜夜澡人人双人人人喊| 亚洲午夜精品久久久久久高潮| 伊人狠狠色j香婷婷综合| 色综合色综合| 中文字幕高清视频| 欧美精品激情视频| 欧美另类高清videos| 国产精品久久国产精麻豆96堂| 成人精品一二三区| 国产精品丝袜一区二区| 亚洲精品一区二区三区网址| 在线日韩网站| 性欧美一区二区| 亚洲精品国产精品国自产在线| 亚洲最大免费视频| 久久综合999| 欧日韩不卡视频| 精品一区二区三区视频在线观看| 亚洲国产一区二区a毛片| 国产成人精品一区二区| 国产a级黄色片| 中国1级黄色片| 亚洲午夜视频在线观看| 亚洲成人av片| 国产成人超碰人人澡人人澡| 欧美r级在线观看| 在线播放国产一区二区三区| 人善交video高清| 超碰在线免费看| 色天堂在线视频| 中文字幕日韩欧美精品在线观看| 黑人と日本人の交わりビデオ| 亚洲色图35p| 成人福利影视| 外国电影一区二区| 96久久精品| 成年男女免费视频网站不卡| 欧美性活一级视频| 老司机aⅴ毛片免费观看| www久久久com| 在线观看污视频| 日本www高清视频| 秋霞影院午夜丰满少妇在线视频| 欧美日韩加勒比精品一区| 美女一区网站| 免费av网站在线看| 羞羞在线观看网站| 欧美日韩国产一区精品一区| 欧美成人免费全部观看天天性色| 一区二区三区欧美日韩| 免费久久久久久久久| 午夜精品中文字幕| 婷婷视频在线观看| 亚洲av午夜精品一区二区三区| 久草资源在线观看|