如何在C#WPF中的DataGrid标头之间放置垂直线

时间:2015-10-03 07:11:01

标签: c# wpf datagrid

我有一个DataGrid,我试图将垂直线放在Headers中 - 就像datagrid具有放置垂直和水平网格线的功能一样。但是我怎样才能将GridLines分隔为Headers ?现在我有

<DataGrid.Resources>
                    <Style TargetType="{x:Type DataGridColumnHeader}">
                    <Setter Property="Background" Value="LightBlue" />
                    <Setter Property="FontWeight" Value="Bold" />
                    <Setter Property="FontSize" Value="18" />
                    <Setter Property="FontFamily" Value="Calibri" />
                </Style>
            </DataGrid.Resources>

2 个答案:

答案 0 :(得分:3)

DataGridColumnHeaderButtonBase,您可以设置其BorderThicknessBorderBrush的样式以达到您想要的效果,您也可以将标题设为中心,因此我们也需要设置HorizontalContentAlignment

<DataGrid.Resources>
      <Style TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="Background" Value="LightBlue" />
        <Setter Property="FontWeight" Value="Bold" />
        <Setter Property="FontSize" Value="18" />                    
        <Setter Property="FontFamily" Value="Calibri" />                    

        <Setter Property="HorizontalContentAlignment" Value="Center"/> 
        <Setter Property="BorderThickness" Value="0,0,1,0"></Setter>
        <Setter Property="BorderBrush" Value="Black"/>
     </Style>
</DataGrid.Resources>

答案 1 :(得分:1)

使用HeaderTemplate。快速执行此操作的方法:

<DataGrid>
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Name}"
                            Header="{Binding HeaderName}">
            <DataGridTextColumn.HeaderTemplate>
                <DataTemplate>
                    <Border BorderThickness="0,0,1,0" 
                            BorderBrush="Black">
                        <TextBlock Text="{Binding Content, RelativeSource={RelativeSource Mode=TemplatedParent}}"
                                   Margin="5"/>                            
                    </Border>
                </DataTemplate>
            </DataGridTextColumn.HeaderTemplate>
        </DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>