WPF中DataGrid进行分组,每个分组都可以折叠
时间: 2023-12-10 18:37:05 浏览: 279
在WPF中,可以使用CollectionView来对DataGrid进行分组。要让每个分组可以折叠,可以使用Expander控件来实现。
下面是一个简单的示例:
```
<Window.Resources>
<CollectionViewSource x:Key="cvs" Source="{Binding Items}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Category" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Window.Resources>
<Grid>
<DataGrid ItemsSource="{Binding Source={StaticResource cvs}}">
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="True">
<Expander.Header>
<TextBlock Text="{Binding Name}" />
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
</DataGrid>
</Grid>
```
在上面的代码中,我们使用CollectionViewSource对DataGrid的数据进行分组,并使用GroupStyle和ContainerStyle来定义每个分组的样式。在ContainerStyle中,我们使用Expander来折叠每个分组,并将分组的名称绑定到Expander的Header上。最后,我们在Expander的Content中使用ItemsPresenter来显示分组中的数据。
阅读全文