Как отобразить эллипс и / или полосу прокрутки в заголовке DataGridTextColumn при сжатии столбца? - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь выяснить, как заставить заголовок моего столбца отображать эллипс и / или полосу прокрутки при сокращении столбца.Я знаю, что данные внутри текстового блока (столбца) могут сжаться до эллипса, но я не могу понять, как заставить заголовок делать то же самое.Я определяю свою сетку данных следующим образом (это пример текстовых столбцов):

<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 Ответ

0 голосов
/ 16 февраля 2019

Вы можете сделать что-то вроде следующего, реализуя 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>
...