WPF數(shù)據(jù)綁定中的RelativeSource屬性
一、簡(jiǎn)介
一個(gè)在Binding中比較重要的知識(shí)點(diǎn)——RelativeSource. 使用RelativeSource對(duì)象指向源對(duì)象。用這個(gè)可以在當(dāng)前元素的基礎(chǔ)上查找其他對(duì)象用于綁定到源對(duì)象。
在實(shí)際使用Binding的過程中大部分時(shí)間Binding都放在了數(shù)據(jù)模板和控件模板中,(數(shù)據(jù)模板是控件模板用于定義控件的UI)。
在模板中編寫B(tài)inding時(shí)有時(shí)候無法直接拿到我們需要綁定的數(shù)據(jù)對(duì)象,我們不能確定我們需要的Source對(duì)象叫什么,但是我們直到了我們需要使用的對(duì)象在UI布局上的相對(duì)關(guān)系。比如控件自己關(guān)聯(lián)了某個(gè)數(shù)據(jù),關(guān)鍵自己某個(gè)層級(jí)的容器數(shù)據(jù)。這個(gè)時(shí)候我們的RelativeSource就派上了用場(chǎng)。我們使用RelativeSource首先要3個(gè)關(guān)鍵參數(shù)。
AncestorType=我們需要查找的類型。比如Grid
AncestorLevel= 我們需要向上查找?guī)准?jí)。
Path=我們找到的元素需要綁定的屬性。
二、代碼
<!--嵌套Grid-->
<Grid x:Name="G0" Margin="12" Background="Red">
<TextBlock Text="In this Grid0 container"/>
<Grid x:Name="G1" Margin="12" Background="Blue">
<TextBlock Text="In this Grid1 container"/>
<Grid x:Name="G2" Margin="12" Background="Yellow">
<TextBlock Text="In this Grid2 container"/>
<Grid x:Name="G3" Margin="12" Background="Beige">
<StackPanel>
<TextBlock Text="In this Grid3 container"/>
<!--AncestorType=我們需要查找的類型。比如Grid-->
<!--AncestorLevel= 我們需要向上查找?guī)准?jí)-->
<!--Path=我們找到的元素需要綁定的屬性。-->
<TextBlock Name="ces" Text="{Binding RelativeSource={RelativeSource AncestorType=Grid,AncestorLevel=1},Path=Name}"/>
</StackPanel>
</Grid>
</Grid>
</Grid>
</Grid>三、運(yùn)行結(jié)果
我們嵌套幾個(gè)Grid,并在每個(gè)嵌套的Grid中都放入了一行文本用來顯示自己所在的位置。設(shè)置了Margin使他有部分的重疊,可以更好的看到相互之間的層級(jí)關(guān)系。最內(nèi)層使用一個(gè)TextBlock.在TextBlock的Text屬性上使用RelativeSource。通過修改AncestorLevel 來設(shè)置向上查找Grid的等級(jí)。我們?cè)O(shè)置為1.向外層查找第一個(gè)找到的Grid對(duì)象。并綁定對(duì)應(yīng)的Name。

到此這篇關(guān)于WPF數(shù)據(jù)綁定RelativeSource屬性的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
asp.net 定時(shí)間點(diǎn)執(zhí)行任務(wù)的簡(jiǎn)易解決辦法
這里的定時(shí)間點(diǎn)執(zhí)行任務(wù),指的是每天的某個(gè)時(shí)間執(zhí)行一項(xiàng)任務(wù)。2009-12-12
基于.NET中:自動(dòng)將請(qǐng)求參數(shù)綁定到ASPX、ASHX和MVC的方法(菜鳥必看)
這篇文章的目的就是告訴初學(xué)者如何自動(dòng)將客戶端用AJAX發(fā)送的參數(shù)自動(dòng)綁定為強(qiáng)類型的成員屬性或方法參數(shù)2013-04-04
ASP.NET對(duì)IIS中的虛擬目錄進(jìn)行操作的代碼
在做系統(tǒng)開發(fā)的過程中,我們經(jīng)常會(huì)遇到用asp.net來操作IIS,如新建虛擬目錄、更改虛擬目錄的屬性、刪除虛擬目錄等操作,現(xiàn)在分析如下2012-10-10
ASP.NET延遲調(diào)用或多次調(diào)用第三方Web?API服務(wù)
這篇文章介紹了ASP.NET延遲調(diào)用或多次調(diào)用第三方Web?API服務(wù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10
值得收藏的asp.net基礎(chǔ)學(xué)習(xí)筆記
這篇文章主要分享了一份值得大家收藏的asp.net基礎(chǔ)學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
.Net與JS時(shí)間日期格式的轉(zhuǎn)換問題對(duì)比分析
這篇文章主要介紹了.Net與JS時(shí)間日期格式的轉(zhuǎn)換問題,結(jié)合實(shí)例形式對(duì)比分析了JS與.Net針對(duì)時(shí)間日期格式的轉(zhuǎn)換處理相關(guān)技巧,需要的朋友可以參考下2016-08-08
asp.net 合并GridView中某列相同信息的行(單元格)
合并GridView中某列相同信息的行(單元格)2009-11-11

