C# Binding RelativeSource
<WrapPanel x:Name="WrapPanelName"> <Border BorderThickness="1" BorderBrush="Blue"> <TextBox x:Name="tbFindAncestor" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type WrapPanel}}, Path=Name}" MinWidth="120"/> </Border> </WrapPanel>
注:AncestorLevel指的是以Bingding目標控件為起點的層級偏移量,Border的偏移量是1,WrapPanel的偏移量是2, AncestorType指的是要找的目標對象的類型,AncestorLevel必須參考AncestorType使用,比如設置了AncestorType={x:Type WrapPanel},則Bingding在尋找時會忽略非WrapPanel的控件,此時WrapPanel的偏移量是1,Border不是WrapPanel類型所以被忽略.
例如:
<WrapPanel Name="w2"> <WrapPanel x:Name="w1"> <Grid x:Name="g1"> <Border BorderThickness="1" BorderBrush="Blue"> <TextBox x:Name="tbFindAncestor" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type WrapPanel},AncestorLevel=2}, Path=Name}" MinWidth="120"/> </Border> </Grid> </WrapPanel> </WrapPanel>
運行結果為:W2


浙公網安備 33010602011771號