Question

Y at-il un moyen d'ajouter infobulle à en-tête DataGridColumn et de conserver encore la fonctionnalité de tri. Le Code ci-dessous ne fonctionne pas (Il ne marche pas afficher l'info-bulle)

<toolkit:DataGridTextColumn Header="Test" Width="70" Binding="{Binding TestText}" ToolTipService.ToolTip="{Binding TestText}">

Et quand j'utilise le code ci-dessous

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

La colonne perd le tri functionality..Help!

Était-ce utile?

La solution

Lorsque la grille crée des colonnes automatiques, il sait quel champ est affiché dans cette colonne. Lorsque vous créez la colonne vous-même, la grille de données ne sait pas quelles sont les données que vous afficherez dans cette colonne et il ne peut pas deviner quel champ pour trier la colonne par. Pour une colonne que vous définissez vous-même sortable, ajoutez la propriété SortMemberPath à votre DataGridTemplateColumn comme ceci:

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

Autres conseils

Pour obtenir le ToolTip à afficher dans la DataGridColumnHeader vous aurez besoin de lier la propriété ToolTip pour au ToolTip de son DataGridColumn comme celui-ci

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

Vous ajoutez une info-bulle au modèle de colonne, de ne pas l'en-tête.

Avez-vous essayé de définir la propriété HeaderStyle sur DataGridColumn à un style qui contient un modèle comprenant une info-bulle pour le HeaderCell?

Jetez un oeil à cet exemple trop

réponses précédentes sont la plupart du temps correct, mais je les trouve trop compliqué ou ne portant que sur une des deux préoccupations du poste.

Tout d'abord, vous pouvez toujours définir la propriété SortPath pour maintenir le tri pour une DataGridTemplateColumn, ou peut-être quand vous voulez trier sur une propriété autre que ce qui est affiché.

Deuxièmement, vous n'avez pas besoin DataGridTemplateColumn afin d'avoir une info-bulle sur la tête de colonne comme le mentionne OP. Vous pouvez utiliser une colonne de modèle si vous souhaitez ajouter une info-bulle à la cellule réelle (mais cela est probablement pas besoin non plus). Dans tous les cas, l'ajout d'une info-bulle à l'en-tête de colonne est plus facile à réaliser par le HeaderStyle

<DataGridTextColumn Header="Test" Binding="{Binding TestText}">
    <DataGridTextColumn.HeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="ToolTip" Value="Test ToolTip" />
        </Style>
    </DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top