Вопрос

Есть ли способ добавить наконечник инструмента в заголовок 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>

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

Это было полезно?

Решение

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

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

Другие советы

Чтобы получить 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>

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

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

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

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

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

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

<DataGridTextColumn Header="Test" Binding="{Binding TestText}">
    <DataGridTextColumn.HeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="ToolTip" Value="Test ToolTip" />
        </Style>
    </DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top