wpf 我已经把datagrid 分组了 如何 实现折叠 和 展开

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf 我已经把datagrid 分组了 如何 实现折叠 和 展开相关的知识,希望对你有一定的参考价值。

参考技术A 折叠和展开的关键在于GroupItem的风格设置。
<Window x:Class="TestDemo.Binding.WindowCollection"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
xmlns:local="clr-namespace:TestDemo.Binding"
mc:Ignorable="d"
Title="WindowCollection" Height="300" Width="300">
<Window.Resources>
<XmlDataProvider x:Key="Employees" XPath="/Employees/*">
<x:XData>
<Employees xmlns="">
<Employee Name="Terry Adams" Type="FTE" EmployeeNumber="1" />
<Employee Name="Claire O'Donnell" Type="FTE" EmployeeNumber="12345" />
<Employee Name="Palle Peterson" Type="FTE" EmployeeNumber="5678" />
<Employee Name="Amy E. Alberts" Type="CSG" EmployeeNumber="99222" />
<Employee Name="Stefan Hesse" Type="Vendor" EmployeeNumber="-" />
</Employees>
</x:XData>
</XmlDataProvider>
<CollectionViewSource x:Key="cvs" Source="Binding Source=StaticResource Employees, XPath=/Employees/*">
<CollectionViewSource.SortDescriptions>
<!--在这里插入排序描述-->
<scm:SortDescription PropertyName="@Name"/>
</CollectionViewSource.SortDescriptions>
<CollectionViewSource.GroupDescriptions>
<!--在这里插入分组描述-->
<PropertyGroupDescription PropertyName="@Type"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
<DataTemplate DataType="Employee">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Binding XPath=@Name" />
</StackPanel>
</DataTemplate>
</Window.Resources>
<StackPanel>
<ListBox ItemsSource="Binding Source=StaticResource cvs" x:Name="lb">
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="x:Type GroupItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="x:Type GroupItem">
<Expander>
<Expander.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Margin="0,0,10,0">
<!--分组的组名-->
<TextBlock Text="Binding Path=Name" FontWeight="Bold" />
<!--该分组元素(员工)的总和数-->
<TextBlock FontWeight="Bold" Text="Binding Path=ItemCount, StringFormat=(共0条)"/>
</StackPanel>
<Line Grid.Column="1" SnapsToDevicePixels="true" X1="0" X2="1" Stretch="Fill" StrokeThickness="1"/>
</Grid>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListBox.GroupStyle>
</ListBox>
</StackPanel>
</Window>

以上是关于wpf 我已经把datagrid 分组了 如何 实现折叠 和 展开的主要内容,如果未能解决你的问题,请参考以下文章

带有分组的 WPF DataGrid 虚拟化

WPF - 从组标题样式中绑定到当前项目

wpf-DataGrid 分组

wpf-DataGrid 分组

WPF DataGrid常用属性记录

WPF Datagrid 打印 - 分组分页