【问题标题】:WPF Datagrid Header ToolTip shows the same text as the Column Header textWPF Datagrid Header ToolTip 显示与列标题文本相同的文本
【发布时间】:2017-07-31 02:13:41
【问题描述】:

我在我的一个控件中有一个 Datagrid,在一个资源字典文件中设置了一个样式。为了看到 ToolTip,我在 Style 中使用了 Setter:

<Style TargetType="{x:Type DataGridColumnHeader}">
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="ToolTipService.ToolTip" Value="{Binding}"/>

在我使用此样式的 DataGrid 控件中,我尝试为每个列标题中的工具提示设置特定文本,但它不起作用。 ToolTip 始终显示与 Header 中的文本相同的文本:

<DataGridTextColumn x:Name="iEnumberColumn" Binding="{Binding IEnumber}"  Width="100" Header="Column A" ToolTipService.ToolTip="Column A Tooltip"  />

我尝试过RelativeSource Self、Dynamic 和Static 资源,但都没有。此外,如果我在样式中没有 Setter,则根本不会出现 ToolTip。如果我在控件中使用其他样式,它可以工作,但我会丢失字典中设置的原始样式。

您能否建议如何在样式中设置工具提示,以便在我定义每个 DataGrid 列时添加特定文本?

【问题讨论】:

  • 这可能会有所帮助:stackoverflow.com/questions/1735573/…
  • 是的,我在此链接上找到了解决方案。很简单,只需将 Header 更改为 TextBlock 并为 TextBlock 设置 ToolTip。我不需要在资源字典文件中做任何事情。谢谢!

标签: wpf datagrid


【解决方案1】:

可能这不是唯一的方法,但我找到了一个简单的解决方案。我替换了下面的代码:

<DataGridTextColumn x:Name="iEnumberColumn" Binding="{Binding IEnumber}"  Width="100" Header="Column A" ToolTipService.ToolTip="Column A Tooltip"  />

用这个:

<DataGridTextColumn x:Name="iEnumberColumn" Binding="{Binding IEnumber}"  Width="100" >
    <DataGridTextColumn.Header>
        <TextBlock Text="ColumnA" ToolTip="Column A Tooltip"/>
    </DataGridTextColumn.Header>
</DataGridTextColumn>

我从资源字典文件中删除了工具提示的 Setter。

【讨论】:

    猜你喜欢
    • 2019-09-02
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多