我正在设计TreeViewItem的样式。该项目有一个我希望显示工具提示的内容展示者:
<ContentPresenter x:Name="PART_Header"
Cursor="Hand"
Grid.Column="1"
ContentSource="Header"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
<ContentPresenter.ToolTip>
<ToolTip
Placement="RelativePoint"
VerticalOffset="-2"
HasDropShadow="False"
BorderBrush="#767676"
Background="#FFF"
Padding="0,1,0,1"
VerticalAlignment="Center"
Content="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ContentPresenter}}, Path=Content}"/>
</ContentPresenter.ToolTip>
</ContentPresenter>这实际上是设置项的控件模板的较大setter的一部分。但是,我似乎无法将工具提示的内容绑定到内容提示者的内容。它一直看起来是空白的(一个小黑盒)。我刚接触binding和WPF,所以请原谅。
发布于 2013-01-31 10:20:22
ToolTips和其他弹出窗口存在于主视觉树之外,因此不能使用RelativeSource访问父级。请尝试使用工具提示的PlacementTarget属性转到其父ContentPresenter:
Content="{Binding RelativeSource={RelativeSource Self}, Path=PlacementTarget.Content}"发布于 2016-06-23 17:19:15
我想使用绑定,就像我的工具提示或弹出窗口是创建它们的控件的子控件一样。在前面的回答中,我不能这样做。我为自定义工具提示编写了示例,但您也可以为弹出窗口、使用行为或其他工具编写示例-这很简单。我的自定义ToolTip:
public class ToolTipEx : ToolTip
{
private readonly FrameworkElement _coreParent;
static ToolTipEx()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(ToolTipEx), new FrameworkPropertyMetadata(typeof(ToolTipEx)));
}
public ToolTipEx(FrameworkElement parent)
{
_coreParent = parent;
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var method = typeof(FrameworkElement).GetMethod("AddLogicalChild", BindingFlags.Instance | BindingFlags.NonPublic);
method.Invoke(_coreParent, new object[] { Parent });
}
}之后,您可以使用正确的绑定:
<Style TargetType="{x:Type controls:ToolTipEx}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToolTip}">
<Border Background="Black"
CornerRadius="3">
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type controls:MyControl}}, Path=MyProperty}"
Margin="1"
Foreground="#FFFFFF"
FontWeight="Bold"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap"
TextAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>发布于 2021-10-18 18:02:11
我不明白为什么你只是将绑定添加到tooltip属性本身?
<ContentPresenter ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=Content}">https://stackoverflow.com/questions/14617290
复制相似问题