#375 – 将Tooltip 于父控件的某个属性绑定(Binding Something in a Tooltip to a Property on the Parent Control)

你可以直接将简单的将控件的某个属性和Tooltip 进行绑定。但是如果Tooltip 的内容是自定义的的,如何使用数据绑定呢?

假设你的Tooltip 的内容中包含了若干个Label,而你想其中某个Label的内容显示的是父控件某个属性的值。

你可以像下面的代码一样使用TooltipPlacementTarget 附加属性来找到父级,然后设置TooltipDataContext 属性来进行绑定。

<TextBox Text="Now is the winter of our discontent etc"
    Width="100" Margin="10">
    <TextBox.ToolTip>
        <ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
            <StackPanel>
                <Label FontWeight="Bold" Content="Full Text"/>
                <Label Content="{Binding Text}"/>
                <Label Content="--Gloster, in Richard III (Act I, Scene I)"/>
            </StackPanel>
        </ToolTip>
    </TextBox.ToolTip>
</TextBox>

显示效果如下:


原文地址:https://wpf.2000things.com/2011/08/30/375-binding-something-in-a-tooltip-to-a-property-on-the-parent-control/

***********************************************************译者注***************************************************

PlacementTarget 属性表示获取或设置放置工具提示的对象。上文中提到的ToolTip的父控件其实就是需要放在ToolTip控件。

RelativeSource 属性可以通过指定绑定源相对于绑定目标的位置,获取或设置绑定源。此属性通常用于将对象的某个属性绑定到该对象的另一个属性,或用于在样式或模板中定义绑定。在上面的例子中ToolTip通过RelativeSource 属性将自己的PlacementTarget 属性绑定到DataContext 属性。

在XAML中RelativeSource 可以有一下几种

 -Self:引用设置绑定的元素,并允许将该元素的一个属性绑定到同一元素中的其他属性。

 -TemplatedParent:引用应用了模板(其中有数据绑定元素)的元素。这类似于设置 TemplateBindingExtension,并仅当绑定在模板中时适用。

 -PreviousData:允许绑定所显示数据项列表中以前的数据项(不是包含数据项的控件)。

  -FindAncestor:引用数据绑定元素父链中的上级。可以使用它绑定到特定类型或其子类的上级。如果您要指定AncestorType 和/或 AncestorLevel,可以使用此模式。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值