WPF 数据分组显示
效果展示:
Student类:
public class Student
{
public string Name { get; set; }
public string Class { get; set; }
public int Age { get; set; }
}
MainWindow.xaml.cs
public partial class MainWindow : Window
{
private ObservableCollection<Student> students;
public IEnumerable<IGrouping<string,Student>> GroupeStudent { get; set; }
public MainWindow()
{
InitializeComponent();
students = new ObservableCollection<Student>()
{
new Student(){ Name = "赵一", Class = "初中", Age = 14},
new Student(){ Name = "钱二", Class = "小学", Age = 9},
new Student(){ Name = "孙三", Class = "高中", Age = 16},
new Student(){ Name = "李四", Class = "初中", Age = 15},
new Student(){ Name = "周五", Class = "高中", Age = 17},
new Student(){ Name = "吴六", Class = "高中", Age = 16},
new Student(){ Name = "郑七", Class = "小学", Age = 8},
new Student(){ Name = "王八", Class = "初中", Age = 14}
};
GroupeStudent = students.GroupBy(x => x.Class);
this.DataContext = this;
}
}
MainWindow.xaml
<Grid Margin="40">
<ListView ItemsSource="{Binding GroupeStudent}">
<ListView.ItemTemplate>
<DataTemplate >
<Expander Header="{Binding Key}">
<ListView ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" Margin="10"/>
<TextBlock Text="{Binding Class}" Margin="10"/>
<TextBlock Text="{Binding Age}" Margin="10"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListView>
</Expander>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>