
XML
WPF CollectionViewSource 分组
WPF(Windows Presentation Foundation)是一种用于创建 Windows 桌面应用程序的技术。在 WPF 中,我们可以使用 CollectionViewSource 来对数据进行分组显示。CollectionViewSource 是一个用于对集合数据进行排序、筛选和分组的视图类。它提供了一种方便的方式来对数据进行分组,并在界面上展示分组结果。CollectionViewSource 的基本用法使用 CollectionViewSource 来对数据进行分组的基本步骤如下:1. 在 XAML 中定义一个 CollectionViewSource 对象,并将其绑定到要分组的数据集合。XML<Window.Resources> <CollectionViewSource x:Key="MyCollectionViewSource" Source="{Binding MyData}" /></Window.Resources>2. 在界面上使用 ItemsControl 控件,并将其 ItemsSource 属性绑定到 CollectionViewSource 的 View 属性。XML<ItemsControl ItemsSource="{Binding Source={StaticResource MyCollectionViewSource}, Path=View}" />3. 在 CollectionViewSource 中设置 GroupDescriptions 属性,定义分组的规则。XML<CollectionViewSource.GroupDescriptions> <PropertyGroupDescription PropertyName="Category" /></CollectionViewSource.GroupDescriptions>在上述代码中,我们使用 Category 属性对数据进行分组。可以根据实际情况选择需要分组的属性。案例代码下面我们来看一个简单的案例,演示如何使用 CollectionViewSource 对数据进行分组。
csharppublic class Product{ public string Name { get; set; } public string Category { get; set; }}public class ViewModel{ public ObservableCollection<Product> MyData { get; set; } public ViewModel() { MyData = new ObservableCollection<Product> { new Product { Name = "Product 1", Category = "Category A" }, new Product { Name = "Product 2", Category = "Category B" }, new Product { Name = "Product 3", Category = "Category A" }, new Product { Name = "Product 4", Category = "Category B" }, new Product { Name = "Product 5", Category = "Category C" }, new Product { Name = "Product 6", Category = "Category C" } }; }}public partial class MAInWindow : Window{ public MAInWindow() { InitializeComponent(); DataContext = new ViewModel(); }}在上述代码中,我们创建了一个 Product 类,其中包含 Name 和 Category 两个属性。然后创建了一个 ViewModel 类,其中包含一个 ObservableCollectionXML<Window x:Class="WpfApp.MAInWindow"</p> XMLns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" XMLns:x="http://schemas.microsoft.com/winfx/2006/xaml" XMLns:local="clr-namespace:WpfApp" Title="MAInWindow" Height="450" Width="800"> <Window.Resources> <CollectionViewSource x:Key="MyCollectionViewSource" Source="{Binding MyData}"> <CollectionViewSource.GroupDescriptions> <PropertyGroupDescription PropertyName="Category" /> </CollectionViewSource.GroupDescriptions> </CollectionViewSource> </Window.Resources> <Grid> <ItemsControl ItemsSource="{Binding Source={StaticResource MyCollectionViewSource}, Path=View}"> <ItemsControl.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Name}" /> </DataTemplate> </ItemsControl.ItemTemplate> <ItemsControl.GroupStyle> <GroupStyle> <GroupStyle.HeaderTemplate> <DataTemplate> <TextBlock FontWeight="Bold" Text="{Binding Name}" /> </DataTemplate> </GroupStyle.HeaderTemplate> </GroupStyle> </ItemsControl.GroupStyle> </ItemsControl> </Grid></Window>在上述 XAML 中,我们使用了一个简单的 TextBlock 来展示每个分组的名称,使用了 GroupStyle 来设置分组的标题样式。使用 WPF 的 CollectionViewSource 可以方便地对数据进行分组展示。通过简单的 XAML 设置,我们可以实现对数据集合的分组显示,并对分组结果进行定制化展示。这为我们的界面设计和数据展示提供了更多的灵活性和便利性。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号