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