将工具提示绑定到 Content Presenter 内容

use*_*629 4 c# wpf xaml tooltip

我正在设计一个 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>
Run Code Online (Sandbox Code Playgroud)

这实际上是设置项目控制模板的更大 setter 的一部分。但是,我似乎无法将工具提示的内容绑定到内容演示者的内容。它一直显示为空白(一个小黑框)。我是绑定和 WPF 的新手,所以请原谅。

Joh*_*wen 6

工具提示和其他弹出窗口存在于主视觉树之外,因此不能使用 RelativeSource 来获取父项。尝试使用 ToolTip 的 PlacementTarget 属性访问其父 ContentPresenter:

Content="{Binding RelativeSource={RelativeSource Self}, Path=PlacementTarget.Content}"
Run Code Online (Sandbox Code Playgroud)

  • 尝试在您的工具提示中放置一个图像并将源属性绑定在一起而不是内容本身。当 Content 是一个 UI 元素而不是文本或数据时,它可能会拉入 Image 控件本身,它不能有 2 个父项,因此会中断。 (2认同)