WPF数据网格文本列工具提示

4
有没有办法在DataGridColumn标题中添加工具提示并仍然保留排序功能。以下代码不起作用(它不显示工具提示)。
<toolkit:DataGridTextColumn Header="Test" Width="70" Binding="{Binding TestText}" ToolTipService.ToolTip="{Binding TestText}">

当我使用以下代码时

<toolkit:DataGridTemplateColumn Header="Test" Width="70">  
              <toolkit:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding TestText}" ToolTip="{Binding TestText}"  />
                        </DataTemplate>
                    </toolkit:DataGridTemplateColumn.CellTemplate>
                </toolkit:DataGridTemplateColumn>

栏目失去了排序功能...求助!

当鼠标悬停在列标题上还是悬停在网格主体中的数据项上时,您希望工具提示出现吗? - Mike Schenk
可能是重复的问题,类似于如何给DataGridTextColumn添加工具提示 - Jay Wick
4个回答

8
为了让 ToolTipDataGridColumnHeader 中显示,你需要将它的 ToolTip 属性绑定到其所属的 DataGridColumnToolTip 属性上,像这样:
<toolkit:DataGridTextColumn Header="Test"
                            Width="70"
                            Binding="{Binding TestText}"
                            ToolTipService.ToolTip="My Tooltip Text">
    <toolkit:DataGridTextColumn.HeaderStyle>
        <Style TargetType="toolkit:DataGridColumnHeader">
            <Setter Property="ToolTip"
                    Value="{Binding RelativeSource={RelativeSource Self},
                                    Path=Column.(ToolTipService.ToolTip)}"/>
        </Style>
    </toolkit:DataGridTextColumn.HeaderStyle>
</toolkit:DataGridTextColumn>

2
一个非常好的ToolTip绑定到列属性的例子。为此点赞! - Konstantin

4

当网格创建自动列时,它知道该列中显示的字段是什么。当您自己创建列时,数据网格不知道您将在该列中显示哪些数据,因此无法猜测按哪个字段对该列进行排序。 要使自定义定义的列可排序,请像这样将SortMemberPath属性添加到您的DataGridTemplateColumn

<DataGridTemplateColumn Header="Test" Width="70" SortMemberPath="TestText">
    ...
</DataGridTemplateColumn>

1
前面的答案大多数是正确的,但我认为它们过于复杂或只涉及帖子中两个问题之一。
首先,您可以始终设置SortPath属性以维护DataGridTemplateColumn的排序,或者可能在要排序的属性与所显示的属性不同的情况下进行排序。
其次,您不需要DataGridTemplateColumn就可以在列标题上添加ToolTip,就像OP所提到的那样。如果您想要向实际单元格添加工具提示,可以使用模板列(但这也可能是不必要的)。无论如何,最简单地将ToolTip添加到列标题是通过HeaderStyle完成的。
<DataGridTextColumn Header="Test" Binding="{Binding TestText}">
    <DataGridTextColumn.HeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="ToolTip" Value="Test ToolTip" />
        </Style>
    </DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>

0

您正在为列模板添加工具提示,而不是标题。

您是否尝试将DataGridColumn的HeaderStyle属性设置为包含标题单元格工具提示的模板样式?

也可以参考这个示例


我更新了我的问题。我想要在列头下方出现的所有记录的工具提示。不知何故,上面的代码无法正常工作。 - developer
@开发者:你看了我回答中的示例吗?我仍然不明白你希望实现的效果是什么。根据你的问题:“在DataGridColumn标题中添加工具提示”。 - Emond

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接