Как отобразить эллипс и / или полосу прокрутки в заголовке 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>
Другие вопросы по тегам