以下是一个示例代码,演示了如何按照itemsource模型的属性将ItemsControl分组:
public class MyItem
{
public string Name { get; set; }
public string Group { get; set; }
}
public MainWindow()
{
InitializeComponent();
// 创建一个示例数据集合
List items = new List
{
new MyItem { Name = "Item A", Group = "Group 1" },
new MyItem { Name = "Item B", Group = "Group 1" },
new MyItem { Name = "Item C", Group = "Group 2" },
new MyItem { Name = "Item D", Group = "Group 2" },
new MyItem { Name = "Item E", Group = "Group 3" },
new MyItem { Name = "Item F", Group = "Group 3" },
};
// 使用LINQ按照Group属性进行分组
var groupedItems = items.GroupBy(item => item.Group);
// 将分组后的数据集合设置为ItemsControl的数据源
myItemsControl.ItemsSource = groupedItems;
}
在这个示例中,我们首先在XAML中定义了一个ItemsControl,设置了一个GroupStyle,用于显示分组的标题。然后,我们设置了一个ItemTemplate,用于显示每个项的内容。
在C#代码中,我们创建了一个包含示例数据的集合。然后,我们使用LINQ的GroupBy方法,按照Group属性对数据进行分组。最后,我们将分组后的数据集合设置为ItemsControl的ItemSource属性。
这样,在界面上就会显示出按照Group属性进行分组的ItemsControl。每个分组的标题会显示在分组的第一个项的上方。