Как растянуть заголовок WPF DataGridColumn при создании?

Я генерирую свои столбцы динамически и хотел бы растянуть их заголовки, как здесь

введите описание изображения здесь

В общем случае столбцы могут иметь разные имена, поэтому невозможно установить фиксированный MinWidth, Возможно ли это путем изменения DataGrid.ColumnHeaderStyle установить что-то вроде горизонтального поля для текста заголовка? Вот мой XAML:

<DataGrid x:Name="ResultDataGrid" Margin="2"
    ItemsSource="{Binding MyData, Mode=OneWay}"
    DisplayMemberPath="Persons"
    SelectedItem="{Binding SelectedPerson}"
    GridLinesVisibility="None" 
    AutoGenerateColumns="False" 
    CanUserAddRows="False" 
    CanUserDeleteRows="False" 
    CanUserReorderColumns="False"
    IsReadOnly="True"
    SelectionMode="Single"
    AllowDrop="True">
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="HorizontalContentAlignment" Value="Center" />
            <Setter Property="Height" Value="25" />
            <Setter Property="FontWeight" Value="Black" />
            <Setter Property="SeparatorBrush" Value="LightGray" />
        </Style>
    </DataGrid.ColumnHeaderStyle>
</DataGrid>     

1 ответ

Решение

Вы можете добавить еще Setter на ваш Style изменить ContentTemplate в TextBlock с установленным левым / правым полем

<DataGrid.ColumnHeaderStyle>
   <Style TargetType="{x:Type DataGridColumnHeader}">
      <Setter Property="HorizontalContentAlignment" Value="Center" />
      <Setter Property="Height" Value="25" />
      <Setter Property="FontWeight" Value="Black" />
      <Setter Property="SeparatorBrush" Value="LightGray" />
      <Setter Property="ContentTemplate">
         <Setter.Value>
            <DataTemplate>
               <TextBlock Text="{Binding}" Margin="20,0"/>
            </DataTemplate>
         </Setter.Value>
      </Setter>
   </Style>
</DataGrid.ColumnHeaderStyle>
Другие вопросы по тегам