您的位置:首页 > 其它

WPF利用通过父控件属性来获得绑定数据源RelativeSource

2015-01-20 23:56 579 查看

WPF利用通过父控件属性来获得绑定数据源RelativeSource

有时候我们不确定作为数据源的对象叫什么名字,但知道作为绑定源与UI布局有相对的关系,如下是一段XAML代码,说明多层布局控件中放置一个文本控件,来显示父级控件的名称。

1、XAML

Html代码

<Grid x:Name="g1" Background="Red" Margin="10">

<DockPanel x:Name="d1" Background="Orange" Margin="10">

<Grid x:Name="g2" Background="Yellow" Margin="10">

<DockPanel x:Name="d2" Background="LawnGreen" Margin="10">

<TextBox x:Name="textBox1" FontSize="24" Margin="10"/>

</DockPanel>

</Grid>

</DockPanel>

</Grid>

2、后台代码

Csharp代码

RelativeSource rs = new RelativeSource(RelativeSourceMode.FindAncestor);

Csharp代码

//设定为离自己控件最近的第二层父控件

rs.AncestorLevel = 2;

Csharp代码

//设定父控件为Gird类型

rs.AncestorType = typeof(Grid);

Csharp代码

//绑定源为Grid的名称

Binding binding = new Binding("Name") { RelativeSource=rs};

Csharp代码

//将绑定的源放在文本显示内容中

this.textBox1.SetBinding(TextBox.TextProperty, binding);

3、以上后台代码等同于XAML中的

Html代码

<TextBox x:Name="textBox1" FontSize="24" Margin="10" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Grid},AncestorLevel=2},Path=Name}"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: