Для группировки ListView
вы можете использовать CollectionViewSource
для группировки данных из источника вашего элемента.
<Grid>
<Grid.Resources>
<CollectionViewSource x:Key="cvs" x:Name="cvs" />
</Grid.Resources>
<ListView Background="White" Foreground="Black" ItemsSource="{Binding Source={StaticResource cvs}}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0.5">
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Complete}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
<Button Content="Group" Click="Button_Click"/>
</Grid>
Код позади
private ObservableCollection<MyClass> myClasses;
public MainPage()
{
this.InitializeComponent();
myClasses = new ObservableCollection<MyClass>();
myClasses.Add(new MyClass { Name = "Nico", Complete = false });
myClasses.Add(new MyClass { Name = "LIU", Complete = true });
myClasses.Add(new MyClass { Name = "He", Complete = true });
myClasses.Add(new MyClass { Name = "Wei", Complete = false });
myClasses.Add(new MyClass { Name = "Dong", Complete = true });
myClasses.Add(new MyClass { Name = "Ming", Complete = false });
this.cvs.Source = myClasses;
this.cvs.IsSourceGrouped = False;
}
Вы можете сгруппировать данные методом групповой кнопки
private void Button_Click(object sender, RoutedEventArgs e)
{
//Group the data
//Set the grouped data to CollectionViewSource
var groups = from c in myClasses
group c by c.Complete;
this.cvs.Source = groups;
this.cvs.IsSourceGrouped = true;
}