Как отобразить эллипс и / или полосу прокрутки в заголовке DataGridTextColumn при сжатии столбца?
Я пытаюсь выяснить, как заставить заголовок моего столбца отображать эллипс и / или полосу прокрутки, когда столбец сжимается. Я знаю, что данные внутри текстового блока (столбца) могут сжаться до эллипса, но я не могу понять, как заставить заголовок делать то же самое. Я определяю свою сетку данных следующим образом (это пример текстовых столбцов):
<DataGrid Height="150" HorizontalAlignment="Stretch" VerticalScrollBarVisibility="Auto">
<DataGrid.Columns>
<DataGridTextColumn Header="Dataset Description" Width="370">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="ToolTip" Value="Name of database"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
В этом примере я хотел бы видеть что-то вроде "Набор данных..." или "Набор данных" с сопровождающей полосой прокрутки, когда пользователь сжимает столбец "Описание набора данных".
Я попытался добавить что-то вроде этого внутри DataGridTextColumn, но это не дает никакого результата / ответа:
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Visible"/>
</Style>
</DataGridTextColumn.HeaderStyle>
Я полагаю, что мог бы реализовать слушателя, чтобы видеть, когда столбцы изменяются в размере, и заново устанавливать значения заголовков, но я бы, очевидно, хотел бы избежать этого. Любые идеи приветствуются!
1 ответ
Вы можете сделать что-то вроде следующего, реализуя DataGrid.ColumnHeaderStyle.
<DataGrid Height="150" HorizontalAlignment="Stretch" VerticalScrollBarVisibility="Auto">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Dataset Description" Width="370">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="ToolTip" Value="Name of database"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>