您可以通过不实现IGrouping<TKey, TModel> 在列表视图中对数据进行分组。请参考以下示例。
XAML 代码:
<Page
..>
<Page.Resources>
<CollectionViewSource x:Name="cvs" x:Key="cvs" IsSourceGrouped="True"/>
</Page.Resources>
<Grid>
<ListView ItemsSource="{x:Bind cvs.View,Mode=OneWay}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:Person">
<TextBlock Text="{x:Bind name}"/>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.GroupStyle >
<GroupStyle>
<GroupStyle.HeaderTemplate >
<DataTemplate>
<TextBlock Text="{Binding Key}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
</Grid>
</Page>
后面的代码:
using System.Collections.ObjectModel;
using System.Linq;
using Windows.UI.Xaml.Controls;
namespace GroupingListView
{
public sealed partial class MainPage : Page
{
public ObservableCollection<Person> persons { get; set; }
public MainPage()
{
this.InitializeComponent();
persons = new ObservableCollection<Person>()
{
new Person(){name="Tom",job="teacher",age=27},
new Person(){name="Jack",job="lawyer",age=29},
new Person(){name="Lily",job="teacher",age=22},
new Person(){name="Arice",job="doctor",age=23},
new Person(){name="Ethan",job="teacher",age=22},
new Person(){name="Kiki",job="lawyer",age=27},
new Person(){name="Sherry",job="doctor",age=20},
new Person(){name="Json",job="lawyer",age=26},
new Person(){name="Jovi",job="doctor",age=23},
new Person(){name="Seria",job="teacher",age=25},
};
var group = from p in persons group p by p.job;
this.cvs.Source = group;
}
}
public class Person
{
public string name { get; set; }
public string job { get; set; }
public int age { get; set; }
}
}