使用CollectionViewSources进行多级分组

时间:2009-02-12 11:24:01

标签: wpf data-binding treeview

在对TreeView进行数据绑定时,如何为显示的项目创建多个级别的分组?

想象一下,你绑定了一个Shop类,其中包含属性RegionRetailChain。期望的效果是使用TreeView显示以下拓扑中的商店:

+ Region: California
|  + Walmart
|    + Walmart Pacific Beach
|    + Walmart Orange County
|    + Walmart San Diego
+ Region: New Jersey
   + Frys
   | + Frys Electronics NJ
   + Walmart
     + Walmart New Jersey

紧要关键是:RegionRetailer无关,反之亦然,因此Shop(叶节点)是唯一的共同点。

使用CollectionViewSource仅允许单个级别的分组(尽管CollectionView类具有建议多级分组的属性)。

使用HierarchicalDataTemplate仅适用于自上而下的拓扑,这种情况不适用于此。

有关如何解决此问题的任何建议?

2 个答案:

答案 0 :(得分:3)

我的问题的答案原来是这样的:

将多个分组(通过PropertyGroupDescriptor)添加到CollectionViewSource,然后使用带有多个GroupStyles的ListBox / DataGrid。这样做的净效果是叶子项目(在我的例子中,商店)被分为两个不同的级别。

切换哪个PropertyGroupDescriptor首先出现在CollectionViewSource中将改变结果树中哪个属性是“根”级别。

答案 1 :(得分:0)

您始终可以编写预处理数据的代码,并创建一组类以便于绑定。