WPF中的binding(九)- 使用Binding的RelativeSource

我们进行Bingding时,如果明确知道数据源的Name,就能用Source或者ElementName进行绑定,但是有时候我们需要绑定的数据源可能没有明确的Name,此时我们就需要利用Bingding的RelativeSource进行绑定。

一、控件关联自身的属性


    
        
            
                
                    
                
            
        
    


关联控件本身的属性时,只需要设置RelativeSource的Mode=Self即可。


其等效的cs代码:

RelativeSource rs = new RelativeSource();
 rs.Mode = RelativeSourceMode.Self;
 Binding binding = new Binding("Name") { RelativeSource = rs };
 this.textbox.SetBinding(TextBox.TextProperty, binding);

运行效果如下:

WPF中的binding(九)- 使用Binding的RelativeSource_第1张图片

二、控件关联其父级容器的属性


    
        
            
                
                    
                
            
        
    

RelativeSource属性的数据类型为RelativeSource类,AncestorLevel指的是以Bingding目标控件为起点的层级偏移量,d2的偏移量是1,g2的偏移量是2,AncestorType指的是要找的目标对象的类型。值得注意的是AncestorLevel需要参考AncestorType使用,如上面设置了AncestorType={x:Type Grid},则Bingding在寻找时会忽略非Grid的控件,此时g2的偏移量是1,g1的偏移量是2,DockPanel被忽略。

你可能感兴趣的:(WPF)