当我们想未一个控件绑定值的时候,我们需要将某个控件的数据绑定到指定的控件上,就可以用RelativeSource。
XAML代码
<Window x:Class="使用Binding的RelativeSource.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid x:Name="第一层" Background="LightBlue" Margin="5"> <DockPanel Name="第二层" Background="Yellow" Margin="10"> <Grid x:Name="第三层" Background="Green" Margin="20"> <!--方案一,用cs--> <!--<TextBox x:Name="zuihou" FontSize="20" Margin="10"/>--> <!--方案二--> <TextBox Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Grid},AncestorLevel=1},Path=Name}"/> </Grid> </DockPanel> </Grid></Window>CS代码
namespace 使用Binding的RelativeSource
{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); //这是第一种方法 //RelativeSource rs = new RelativeSource(RelativeSourceMode.FindAncestor); AncestorLevel是指以Binding目标控件为起点的目标偏移量 //rs.AncestorLevel = 1; AncestorType是说Bingding目标的类型 //rs.AncestorType = typeof(Grid); //Binding binding = new Binding("Name") { RelativeSource=rs}; //this.zuihou.SetBinding(TextBox.TextProperty, binding); } }}