WPF Binding中的RelativeSource屬性
一、簡介
一個在Binding中比較重要的知識點——RelativeSource. 使用RelativeSource物件指向源物件,用這個可以在當前元素的基礎上查找其他物件用于系結到源物件,
在實際使用Binding的程序中大部分時間Binding都放在了資料模板和控制元件模板中,(資料模板是控制元件模板用于定義控制元件的UI),
在模板中撰寫Binding時有時候無法直接拿到我們需要系結的資料物件,我們不能確定我們需要的Source物件叫什么,但是我們直到了我們需要使用的物件在UI布局上的相對關系,比如控制元件自己關聯了某個資料,關鍵自己某個層級的容器資料,這個時候我們的RelativeSource就派上了用場,我們使用RelativeSource首先要3個關鍵引數,
AncestorType=我們需要查找的型別,比如Grid
AncestorLevel= 我們需要向上查找幾級,
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= 我們需要向上查找幾級--> <!--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,

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/288643.html
標籤:.NET技术
上一篇:EF Core使用
