WPF 使用RelativeSource绑定

Posted xisghiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 使用RelativeSource绑定相关的知识,希望对你有一定的参考价值。

WPF 使用RelativeSource绑定

在WPF绑定的时候,指定绑定源时,有一种办法是使用RelativeSource。

这种办法的意思是指当前元素和绑定源的位置关系。

第一种关系: Self

举一个最简单的例子:在一个StackPanel中,有一个TextBlock。

<TextBlock FontSize="18" FontWeight="Bold" Margin="10" 
Background="Red" Width="80" Height="Binding RelativeSource=RelativeSource Self,Path=Width">MultiBinding Sample</TextBlock>

如果想让textbox的width和height相同,通过设置属性Height="Binding RelativeSource=RelativeSource Self,Path=Width" 就可以实现。

第二种关系:TemplatedParent

例如为一个Button写一个样式,修改Button为椭圆型。同时需要椭圆的背景色和Button的背景色相同。

<Style TargetType="x:Type Button">
            <Setter Property="Background" Value="Green"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="x:Type Button">
                        <Grid>
                            <Ellipse>
                                <Ellipse.Fill>
                                    <SolidColorBrush Color="Binding Path=Background.Color,RelativeSource=RelativeSource TemplatedParent"/>
                                </Ellipse.Fill>
                            </Ellipse>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

在这个例子中 TemplateParent就是指的Button

第三种关系:AncestorType

指定绑定源为某个父元素, 中Label的背景色和Grid的背景色一样。

<Grid>
   <Label Background = Binding Path=Background, RelativeSource=RelativeSource AncestorType=x:Type Grid/>
</Grid>

以上是关于WPF 使用RelativeSource绑定的主要内容,如果未能解决你的问题,请参考以下文章

WPF---数据绑定之RelativeSource

找不到WPF绑定属性

使用多重绑定设置c#wpf组合框背景颜色[关闭]

[WPF]解决模板中ContextMenu绑定CommandParameter的问题

c#WPF XAML对ComboBox.Resources项的RelativeSource引用

wpf事件绑定,比如一个控件的左键按下事件