wpf-DataGrid 分组

C# 数据:

namespace _1.DataGridStudy
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
     ObservableCollection<Student> studentList;
     ICollectionView vm;
        public MainWindow()
        {
            InitializeComponent();
            studentList = new ObservableCollection<Student>();
            studentList.Add(new Student() { 学号 = 1, 姓名 = "Alex", 班级 ="二班"});
            studentList.Add(new Student() { 学号 = 2, 姓名 = "Peter", 班级 = "一班" });
            studentList.Add(new Student() { 学号 = 3, 姓名 = "Zack", 班级 = "三班" });
            studentList.Add(new Student() { 学号 = 4, 姓名 = "TJ", 班级 = "二班" });
            studentList.Add(new Student() { 学号 = 5, 姓名 = "Jack", 班级 = "一班" });
            studentList.Add(new Student() { 学号 = 6, 姓名 = "Jacky", 班级 = "三班" });
            studentList.Add(new Student() { 学号 = 7, 姓名 = "James", 班级 = "一班" });

            dg1.ItemsSource = studentList;
            vm = CollectionViewSource.GetDefaultView(studentList);
            vm.GroupDescriptions.Add(new PropertyGroupDescription("班级"));
            //vm.SortDescriptions.Add(new SortDescription("学号",ListSortDirection.Descending));
        }


    }
    public class Student
    { 
        public int 学号 { get; set; }
        public string 姓名 { get; set; }
        public string 班级 { get; set; }
    }

xaml:

 <Grid>

        <DataGrid Name="dg1" AutoGenerateColumns="False" HorizontalAlignment="Left" VerticalAlignment="Top" CanUserAddRows="False" Margin="0">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="学号" Binding="{Binding 学号}" />
                    <DataGridTextColumn Header="姓名" Binding="{Binding 姓名}"  />
                    <DataGridTextColumn Header="班级" Binding="{Binding 班级}"  />
                </DataGrid.Columns>
                <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>
                                                    <StackPanel Orientation="Horizontal">
                                                        <TextBlock Text="{Binding Name}" />
                                                        <TextBlock Text="    数量:"/>
                                                        <TextBlock Text="{Binding ItemCount}"/>
                                                    </StackPanel>
                                                </Expander.Header>
                                                <ItemsPresenter/>
                                            </Expander>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </GroupStyle.ContainerStyle>
                    </GroupStyle>
                </DataGrid.GroupStyle>
            </DataGrid>
        
       
    </Grid>
原文地址:https://www.cnblogs.com/dangnianxiaoqingxin/p/12899574.html