我想创建一个WPF数据网格,该网格显示每个类别的列集的证书数量,如下图所示: enter image description here
有人可以帮助我如何使用wpf Datagrid实现这一目标吗?
答案 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
并将其求和为边框粗细,从而轻松地包括它们。
希望它能对您有所帮助。