使WPF DataGrid在每个组头下重复列标题

时间:2013-03-20 19:19:04

标签: wpf datagrid grouping datagridcolumnheader

我在WPF中使用分组(通过CollectionViewSource中的PropertyGroupDescription)并在绑定的DataGrid中显示分组的集合。

通常(如在this MSDN Example中)这样的DataGrid将显示列标题,然后是每个组标题(在GroupStyle.Containerstyle中定义),后跟给定组中的数据行。这是一个快速的视觉效果:

 +=====================================================+
 |  ColumnHeader1  |  ColumnHeader2  |  ColumnHeader3  |
 +-----------------+-----------------+-----------------+
 |  Group A                                            |
 +-----------------------------------------------------+
 |   A_Value_11    |   A_Value_12    |   A_Value_13    |
 +-----------------------------------------------------+
 |   A_Value_21    |   A_Value_22    |   A_Value_23    |
 +-----------------+-----------------+-----------------+
 |  Group B                                            |
 +-----------------------------------------------------+
 |   B_Value_11    |   B_Value_12    |   B_Value_13    |
 +-----------------------------------------------------+
 |   B_Value_21    |   B_Value_22    |   B_Value_23    |
 +=====================================================+

有没有办法让DataGrid列标题在每个组标题后显示/重复?

从视觉上看,这更符合我的要求:

 +=====================================================+
 |  Group A                                            |
 +-----------------------------------------------------+
 |  ColumnHeader1  |  ColumnHeader2  |  ColumnHeader3  |
 +-----------------------------------------------------+
 |   A_Value_11    |   A_Value_12    |   A_Value_13    |
 +-----------------------------------------------------+
 |   A_Value_21    |   A_Value_22    |   A_Value_23    |
 +-----------------+-----------------+-----------------+
 |  Group B                                            |
 +-----------------------------------------------------+
 |  ColumnHeader1  |  ColumnHeader2  |  ColumnHeader3  |
 +-----------------------------------------------------+
 |   B_Value_11    |   B_Value_12    |   B_Value_13    |
 +-----------------------------------------------------+
 |   B_Value_21    |   B_Value_22    |   B_Value_23    |
 +=====================================================+

是否可以毫不费力地做到这一点?

1 个答案:

答案 0 :(得分:0)

我会为包含列标题的每个组添加额外的第一行作为文本,并使用特殊的单元格模板显示它,例如因为TextBlock的样式与典型的列标题类似。