使用CollectionViewSources进行多级别分组

使用CollectionViewSources进行多级别分组

问题描述:

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

想象一下,您绑定到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 

敲弯是这样的:Region s的不相关的Retailer S,并且反之亦然,所以Shop(叶节点)是唯一的共同点。

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

使用HierarchicalDataTemplate仅适用于自顶向下的拓扑,这种情况本身并不适用。

关于如何解决这个问题的任何建议?

回答我的问题竟然是这样的:

添加多个分组(通过PropertyGroupDescriptor)到CollectionViewSource,然后使用具有多个GroupStyles一个ListBox /数据网格。这种净效应是,叶子项目(在我的例子中,商店)分为两个不同的层次。

切换哪个PropertyGroupDescriptor首先出现在CollectionViewSource中将更改哪个属性是生成树中的“根”级别。

+0

我想我有一个类似于你的场景,但我无法清楚地理解你的答案。你能帮我找到解决这个问题吗?http://stackoverflow.com/questions/25482570/how-to-obtain-multi-level-hierarchy-with-collectionviewsource-to-bind-to-semanti – vivekp 2014-08-25 16:46:36

您可以随时编写代码预处理数据并创建一组类以便更容易地进行绑定。