WPF數據綁定中的RelativeSource屬性
一、簡介
一個在Binding中比較重要的知識點——RelativeSource. 使用RelativeSource對象指向源對象。用這個可以在當前元素的基礎上查找其他對象用于綁定到源對象。
在實際使用Binding的過程中大部分時間Binding都放在了數據模板和控件模板中,(數據模板是控件模板用于定義控件的UI)。
在模板中編寫B(tài)inding時有時候無法直接拿到我們需要綁定的數據對象,我們不能確定我們需要的Source對象叫什么,但是我們直到了我們需要使用的對象在UI布局上的相對關系。比如控件自己關聯(lián)了某個數據,關鍵自己某個層級的容器數據。這個時候我們的RelativeSource就派上了用場。我們使用RelativeSource首先要3個關鍵參數。
AncestorType=我們需要查找的類型。比如Grid
AncestorLevel= 我們需要向上查找?guī)准墶?br />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ī)准?-> <!--Path=我們找到的元素需要綁定的屬性。--> <TextBlock Name="ces" Text="{Binding RelativeSource={RelativeSource AncestorType=Grid,AncestorLevel=1},Path=Name}"/> </StackPanel> </Grid> </Grid> </Grid> </Grid>
三、運行結果
我們嵌套幾個Grid,并在每個嵌套的Grid中都放入了一行文本用來顯示自己所在的位置。設置了Margin使他有部分的重疊,可以更好的看到相互之間的層級關系。最內層使用一個TextBlock.在TextBlock的Text屬性上使用RelativeSource。通過修改AncestorLevel 來設置向上查找Grid的等級。我們設置為1.向外層查找第一個找到的Grid對象。并綁定對應的Name。
到此這篇關于WPF數據綁定RelativeSource屬性的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
基于.NET中:自動將請求參數綁定到ASPX、ASHX和MVC的方法(菜鳥必看)
這篇文章的目的就是告訴初學者如何自動將客戶端用AJAX發(fā)送的參數自動綁定為強類型的成員屬性或方法參數2013-04-04asp.net 合并GridView中某列相同信息的行(單元格)
合并GridView中某列相同信息的行(單元格)2009-11-11