WPF,请教DataGrid的复合表头是怎么做的?

时间:2022-07-05 09:06:01
DataGrid控件的复合表头是怎么做的,各位有没有资料。
我给列写了数据模板。如下:

<Window.Resources>
    <Style x:Key="标题1">
        <Setter Property="DataGridColumnHeader.ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Grid HorizontalAlignment="Left">
                        <Grid.RowDefinitions>
                            <RowDefinition></RowDefinition>
                            <RowDefinition></RowDefinition>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition></ColumnDefinition>
                            <ColumnDefinition></ColumnDefinition>
                        </Grid.ColumnDefinitions>
                        <Border Grid.ColumnSpan="2" BorderBrush="Black" BorderThickness="0,0,0,1">
                            <TextBlock Text="姓名" TextAlignment="Center" VerticalAlignment="Center"/>
                        </Border>
                        <Border Grid.Row="1" BorderBrush="Black" BorderThickness="0,0,1,0">
                            <TextBlock Text="大名" TextAlignment="Center" VerticalAlignment="Center" />
                        </Border>
                        <TextBlock Text="小名" Grid.Row="1" Grid.Column="1" TextAlignment="Center" VerticalAlignment="Center"/>
                    </Grid>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<Grid HorizontalAlignment="Left" Height="557" VerticalAlignment="Top" Width="483">
    <DataGrid HorizontalAlignment="Left" VerticalAlignment="Top" Height="150" Width="332" Margin="29,29,0,0">
        <DataGrid.Columns>
            <DataGridTextColumn HeaderStyle="{StaticResource 标题1}"/>
            <DataGridTextColumn Header="年龄"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>


WPF,请教DataGrid的复合表头是怎么做的?

看起来还像模像样的,不过,有个问题诶,只能选择整个"姓名"列,不能单独选择"大名"、"小名"列............各位大师,请教一下,复合表头是怎么做的。谢谢

6 个解决方案

#1


只能选择整个"姓名"列,不能单独选择"大名"、"小名"列.
这说明实际上还是一列。如果要能单独选择的话,就是两列了。

这里提供一种解决方案:
1. 把DataGrid的表头隐藏掉。可设置ColumnHeaderHeight为0.
2. 在DataGrid的上方,用Grid组合成一个假的表头,这个表头对你就可以随意设置合并了。列的宽度可以绑定到DataGrid中列的宽度。

#3


还有资料吗........

#4


有好的资料吗??

#5


哪位朋友还有好点的资料没啊?

#1


只能选择整个"姓名"列,不能单独选择"大名"、"小名"列.
这说明实际上还是一列。如果要能单独选择的话,就是两列了。

这里提供一种解决方案:
1. 把DataGrid的表头隐藏掉。可设置ColumnHeaderHeight为0.
2. 在DataGrid的上方,用Grid组合成一个假的表头,这个表头对你就可以随意设置合并了。列的宽度可以绑定到DataGrid中列的宽度。

#2


#3


还有资料吗........

#4


有好的资料吗??

#5


哪位朋友还有好点的资料没啊?

#6