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!

¿Fue útil?

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?

Eche un vistazo a este ejemplo también

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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top