DataGrid列集,每个集都有一个标题

时间:2018-06-26 09:19:46

标签: wpf wpfdatagrid

我想创建一个WPF数据网格,该网格显示每个类别的列集的证书数量,如下图所示: enter image description here

有人可以帮助我如何使用wpf Datagrid实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

您可以将DataGrid放在Grid面板中,然后将其ColumnDefinitions的宽度绑定到列标题的宽度。像这样:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="{Binding ElementName=datagrid, Path=RowHeaderWidth}" />
            <ColumnDefinition Width="{Binding ElementName=ColumnD, Path=ActualWidth}" />
            <ColumnDefinition Width="{Binding ElementName=ColumnE, Path=ActualWidth}" />
            <ColumnDefinition Width="{Binding ElementName=ColumnF, Path=ActualWidth}" />
            <ColumnDefinition Width="{Binding ElementName=ColumnG, Path=ActualWidth}" />
            <ColumnDefinition Width="{Binding ElementName=ColumnH, Path=ActualWidth}" />
            <ColumnDefinition Width="{Binding ElementName=ColumnI, Path=ActualWidth}" />
        </Grid.ColumnDefinitions>
        <DataGridColumnHeader Grid.Column="1" Grid.ColumnSpan="2" Content="A" HorizontalContentAlignment="Center" />
        <DataGridColumnHeader Grid.Column="3" Grid.ColumnSpan="2" Content="B" HorizontalContentAlignment="Center" />
        <DataGridColumnHeader Grid.Column="5" Grid.ColumnSpan="2" Content="C" HorizontalContentAlignment="Center" />
    </Grid>
    <DataGrid Name="datagrid" AutoGenerateColumns="False"
              Grid.Row="1" RowHeaderWidth="0">
        <DataGrid.Columns>
            <DataGridTextColumn Header="D" Width="*" x:Name="ColumnD" />
            <DataGridTextColumn Header="E" Width="*" x:Name="ColumnE" />
            <DataGridTextColumn Header="F" Width="*" x:Name="ColumnF" />
            <DataGridTextColumn Header="G" Width="*" x:Name="ColumnG" />
            <DataGridTextColumn Header="H" Width="*" x:Name="ColumnH" />
            <DataGridTextColumn Header="I" Width="*" x:Name="ColumnI" />
        </DataGrid.Columns>
    </DataGrid>
</Grid>

我的XAML不考虑标头的边框,但是您可以使用转换器获取ActualWidth并将其求和为边框粗细,从而轻松地包括它们。

希望它能对您有所帮助。