如何在DataGridTextColumn中添加工具提示

77

我正在使用 WPFtoolkit 的 DataGrid,我需要在 DataGridTextColumn 中换行文本或者给文本列添加一个 ToolTip。我已经在网上搜索过,但是没有找到合适的解决方案。期待您宝贵的建议...

2个回答

147

是的,您可以为DataGridTextColumn添加工具提示文本 - 只需对其进行样式化即可。

<DataGridTextColumn Header="ScreenName" Binding="{Binding ScreenName}" >
    <DataGridTextColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="ToolTip" Value="{Binding Name}" />
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>

对于任何使用Silverlight的人,请查看@MarkGladdling的答案 - Jay Wick
4
FYI,我曾经遇到了一些困难,直到我意识到如果将数据网格中的“IsHitTestVisible”设置为FALSE,则工具提示无法正常工作。请注意保持内容原意并使其更加通俗易懂。 - Mageician
使用这种方法,您能否添加图像和/或编辑工具提示的背景? - ajr
如果您只想在列标题处显示工具提示,请使用“DataGridTextColumn.HeaderStyle”和样式的“TargetType =” DataGridColumnHeader“。 - Jiří Skála

24

我不确定能否给DataGridTextColumn添加工具提示,但您可以轻松地改用DataGridTemplateColumnToolTipService。例如:

<data:DataGrid.Columns>
    <data:DataGridTemplateColumn Header="Broker">
        <data:DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Moniker.Abbreviation}"
                           ToolTipService.ToolTip="{Binding Moniker.Name}" />
            </DataTemplate>
        </data:DataGridTemplateColumn.CellTemplate>
    </data:DataGridTemplateColumn>
</data:DataGrid.Columns>

在此示例中,在列中显示了Moniker.Abbreviation。当用户悬停在单元格上时,完整的经纪人名称 (Moniker.Name) 将在工具提示中显示。

注意:此示例摘自 Silverlight 3.0 应用程序。


1
这个也适用于Silverlight,在谷歌搜索的前三个结果中找到了这个。当然,如果您的代码与最新的SL xaml模板匹配,请将xml ns更改为'sdk:'而不是'data:'。 - yzorg
虽然我不使用Silverlight,但那是唯一一个对我有效的答案。最受欢迎的答案在我的应用程序中会导致异常。 - Endery

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