【发布时间】:2010-11-20 14:43:10
【问题描述】:
我一直试图想办法在代码隐藏中对 DataGrid 中的项目进行分组。 我的 DataGrid 填充了自定义对象列表集合的代码隐藏,我想要将这些对象拆分为组。谢谢
【问题讨论】:
我一直试图想办法在代码隐藏中对 DataGrid 中的项目进行分组。 我的 DataGrid 填充了自定义对象列表集合的代码隐藏,我想要将这些对象拆分为组。谢谢
【问题讨论】:
您确实需要使用 CollectionView,但 CollectionView 基本类型不支持分组。
要使分组在代码中起作用,您需要使用实现分组的派生 CollectionView 类型之一,例如:
你可以这样使用它:
ListCollectionView lcv = new ListCollectionView(myCollection);
lcv.GroupDescriptions.Add(new PropertyGroupDescription("PropertyNameToGroupBy"));
MyDataGrid.ItemsSource = lcv;
通常当你直接给ItemSource设置一个集合时,WPF会自动为你创建一个CollectionView。
如果您想了解更多信息,Bea Stollnitz 就CollectionViews on her blog 谈了很多。
【讨论】:
您可以将DataGrid 绑定到从您的对象列表中创建的CollectionView。 CollectionView 支持分组。这不是真正的代码隐藏解决方案,但非常易于使用。
【讨论】:
DataGrid 使用 ICollectionView 和 CollectionView 实现此接口。或许你可以从DataGrid和ICollectionView的互动中得到一些启发?您可以通过在您的对象集合上实现自己的ICollectionView 来实现您的解决方案。