WPF DataGridTextColumn ToolTip
-
27-10-2019 - |
Pregunta
¿Hay alguna manera de agregar la punta de la herramienta al encabezado DataGridColumn y aún así conservar la funcionalidad de clasificación? El siguiente código no funciona (no muestra la información sobre herramientas)
<toolkit:DataGridTextColumn Header="Test" Width="70" Binding="{Binding TestText}" ToolTipService.ToolTip="{Binding TestText}">
Y cuando uso el código a continuación
<toolkit:DataGridTemplateColumn Header="Test" Width="70">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding TestText}" ToolTip="{Binding TestText}" />
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>
La columna pierde la funcionalidad de clasificación ... ¡Help!
Solución
Cuando la cuadrícula crea columnas automáticas, sabe qué campo se muestra en esa columna. Cuando crea la columna usted mismo, la cuadrícula de datos no sabe qué datos mostrará en esa columna y, por lo tanto, no puede adivinar qué campo ordenar la columna. Para hacer una columna, se defina, agregue el SortMemberPath
propiedad a su DataGridTemplateColumn
como esto:
<DataGridTemplateColumn Header="Test" Width="70" SortMemberPath="TestText">
...
</DataGridTemplateColumn>
Otros consejos
Para obtener el ToolTip
para mostrar en el DataGridColumnHeader
Tendrás que atar el ToolTip
propiedad para el ToolTip
de su DataGridColumn
como esto
<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>
Está agregando una información sobre herramientas a la plantilla de columna, no al encabezado.
¿Ha intentado establecer la propiedad Headerstyle en DataGridColumn en un estilo que contiene una plantilla que incluye una información sobre herramientas para Headercell?
Las respuestas anteriores son en su mayoría correctas, sin embargo, las encuentro demasiado complicadas o abordando solo una de las dos preocupaciones de la publicación.
En primer lugar, siempre puedes configurar el SortPath
propiedad para mantener la clasificación para un DataGridTemplateColumn
, o posiblemente cuando desee clasificar una propiedad que no sea la que se muestra.
Segundo, no necesitas un DataGridTemplateColumn
Para tener una información sobre herramientas en el encabezado de la columna como las menciones de OP. Puede usar una columna de plantilla si desea agregar una información sobre herramientas a la celda real (pero esto probablemente tampoco sea necesario). En cualquier caso, la adición de la información sobre herramientas al encabezado de la columna se logra más fácilmente por el estilo de cabeza
<DataGridTextColumn Header="Test" Binding="{Binding TestText}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="ToolTip" Value="Test ToolTip" />
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>