How do I Add a Tooltip To a DataGridTextColumn
Asked Answered
D

2

78

I'm using WPFtoolkit DataGrid ,I have to wrap text in a DataGridTextColumn or I have to add a ToolTip to the text column. I have searched the net but i couldn't get a proper solution. Expecting your valuable suggestions...

Domiciliary answered 22/7, 2009 at 10:16 Comment(0)
S
152

Yes, you can add tooltip text to DataGridTextColumn - just stylize it

<DataGridTextColumn Header="ScreenName" Binding="{Binding ScreenName}" >
    <DataGridTextColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="ToolTip" Value="{Binding Name}" />
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>
Supereminent answered 2/12, 2011 at 17:36 Comment(4)
for anyone on Silverlight, see @MarkGladdling's answerHerstein
FYI, I struggled with this for a while until I realized that if "IsHitTestVisible" is set to FALSE on the datagrid tooltips don't work.Unsegregated
Can you add image and/or edit the background of the tooltip somehow when using this approach?Mess
If you want the tooltip only at the column header, use DataGridTextColumn.HeaderStyle and the style's TargetType="DataGridColumnHeader".Spinal
E
24

I'm not sure if you can add a tooltip to a DataGridTextColumn but you can easily use the DataGridTemplateColumn and the ToolTipService instead. e.g.

<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>

In this example Moniker.Abbreviation is displayed in the column. When the user hovers over a cell, the full broker name (Moniker.Name) is displayed in the tooltip.

Note: This example was taken from a Silverlight 3.0 application.

Elconin answered 29/12, 2009 at 23:21 Comment(2)
This also works in Silverlight, got here from top 3 hits from google search. Of course change xml ns to 'sdk:' instead of 'data:' if your code matches the latest SL xaml templates.Doubleacting
Although I don't work with Silverlight, that is the only answer which also worked for me. The most popular answer results an exception in my application.Jumbo

© 2022 - 2024 — McMap. All rights reserved.