C# 如何在WPF中设置DataGrid标头的样式

C# 如何在WPF中设置DataGrid标头的样式,c#,wpf,c#-4.0,styles,C#,Wpf,C# 4.0,Styles,我有一个像这样的DataGrid: <DataGrid AutoGenerateColumns="False" Height="221" HorizontalAlignment="Center" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Margin="6,269,0,0"

我有一个像这样的
DataGrid

<DataGrid AutoGenerateColumns="False"  
          Height="221" 
          HorizontalAlignment="Center" 
          VerticalContentAlignment="Center" 
          HorizontalContentAlignment="Center" 
          Margin="6,269,0,0" 
          Name="dataGrid1" 
          VerticalAlignment="Center" 
          Width="875" 
          SelectionChanged="dataGrid1_SelectionChanged">
    <DataGrid.Columns>
        <DataGridTextColumn x:Name="Id" 
                            Header="ID"
                            Binding="{Binding Path=Key}" 
                            HeaderStyle="" />
        <DataGridTemplateColumn Header="Image" 
                                Width="SizeToCells" 
                                IsReadOnly="True" 
                                MinWidth="80">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Image Width="16" 
                           Height="16"
                           Source="{StaticResource MyImageSource}"
                           HorizontalAlignment="Center" 
                           VerticalAlignment="Center"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>
网格列将变为:


为什么?

要避免页眉折叠的影响,只需通过以下方式更正样式:

  <Setter Property="HorizontalAlignment" Value="Stretch" />
  <Setter Property="HorizontalContentAlignment" Value="Center" />

为Datagrid的DatagridColumnHeader添加样式

<DataGrid Name="GatewayPortsDataGrid" Height="auto" Width="auto">
     <DataGrid.Resources>
            <Style BasedOn="{StaticResource {x:Type DataGridColumnHeader}}" TargetType="{x:Type DataGridColumnHeader}" >
            <Setter Property="Background" Value="White" />
            <Setter Property="Foreground" Value="Black" />                                   
            <Setter Property="BorderBrush" Value="Black"/>                                  
            <Setter Property="BorderThickness" Value="1 1 1 1"/>                               
            <Setter Property="Margin" Value="-1,-1,0,0" />
            <Setter Property="Height" Value="28" />                                                                    
            <Setter Property="Width" Value="auto"/>                                    
            <Setter Property="HorizontalContentAlignment" Value="Center"/>                                                                        
            </Style>
        </DataGrid.Resources>
</DataGrid>

由于默认设置为“拉伸”,因此无需进行拉伸。
<DataGrid Name="GatewayPortsDataGrid" Height="auto" Width="auto">
     <DataGrid.Resources>
            <Style BasedOn="{StaticResource {x:Type DataGridColumnHeader}}" TargetType="{x:Type DataGridColumnHeader}" >
            <Setter Property="Background" Value="White" />
            <Setter Property="Foreground" Value="Black" />                                   
            <Setter Property="BorderBrush" Value="Black"/>                                  
            <Setter Property="BorderThickness" Value="1 1 1 1"/>                               
            <Setter Property="Margin" Value="-1,-1,0,0" />
            <Setter Property="Height" Value="28" />                                                                    
            <Setter Property="Width" Value="auto"/>                                    
            <Setter Property="HorizontalContentAlignment" Value="Center"/>                                                                        
            </Style>
        </DataGrid.Resources>
</DataGrid>