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>