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

2016-10-26 11:35:37来源:CSDN作者:Libby1984人点击

第七城市

你可以直接将简单的将控件的某个属性和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,可以使用此模式。




第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台