WPF DataGridTextColumn Tooltip - PullRequest
       41

WPF DataGridTextColumn Tooltip

4 голосов
/ 29 января 2011

Есть ли способ добавить всплывающую подсказку в заголовок DataGridColumn и при этом сохранить функцию сортировки.Приведенный ниже код не работает (он не отображает всплывающую подсказку)

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

И когда я использую приведенный ниже код

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

Столбец теряет функциональность сортировки .. Помощь!

Ответы [ 4 ]

8 голосов
/ 29 января 2011

Чтобы ToolTip отображалось в DataGridColumnHeader, вам необходимо привязать свойство ToolTip для него к ToolTip его DataGridColumn, как это

<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>
4 голосов
/ 29 января 2011

Когда сетка создает автоматические столбцы, она знает, какое поле отображается в этом столбце.Когда вы сами создаете столбец, сетка данных не знает, какие данные вы будете отображать в этом столбце, и поэтому не может угадать, по какому полю сортировать столбец.Чтобы сделать столбец, который вы определяете как сортируемый, добавьте свойство SortMemberPath к вашему DataGridTemplateColumn следующим образом:

<DataGridTemplateColumn Header="Test" Width="70" SortMemberPath="TestText">
    ...
</DataGridTemplateColumn>
0 голосов
/ 18 января 2014

Предыдущие ответы в основном правильные, однако я нахожу их слишком сложными или затрагивающими только одну из двух проблем поста.

Во-первых, вы всегда можете установить свойство SortPath, чтобы поддерживать сортировку для DataGridTemplateColumn или, возможно, когда вы захотите отсортировать какое-либо свойство, отличное от отображаемого.

Во-вторых, вам не нужно DataGridTemplateColumn, чтобы иметь подсказку для заголовка столбца, как упоминается в OP. Вы можете использовать столбец шаблона, если хотите добавить всплывающую подсказку к фактической ячейке (но это, вероятно, также не требуется). В любом случае, добавление всплывающей подсказки к заголовку столбца легче всего выполнить с помощью HeaderStyle

<DataGridTextColumn Header="Test" Binding="{Binding TestText}">
    <DataGridTextColumn.HeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="ToolTip" Value="Test ToolTip" />
        </Style>
    </DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
0 голосов
/ 29 января 2011

Вы добавляете подсказку к шаблону столбца, а не к заголовку.

Вы пытались установить свойство HeaderStyle в DataGridColumn для стиля, который содержит шаблон, включающий подсказку для HeaderCell?

Посмотрите и на этот пример

...