在对TreeView
进行数据绑定时,如何为显示的项目创建多个级别的分组?
想象一下,你绑定了一个Shop类,其中包含属性Region
和RetailChain
。期望的效果是使用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
与Retailer
无关,反之亦然,因此Shop
(叶节点)是唯一的共同点。
使用CollectionViewSource
仅允许单个级别的分组(尽管CollectionView
类具有建议多级分组的属性)。
使用HierarchicalDataTemplate
仅适用于自上而下的拓扑,这种情况不适用于此。
有关如何解决此问题的任何建议?
答案 0 :(得分:3)
我的问题的答案原来是这样的:
将多个分组(通过PropertyGroupDescriptor)添加到CollectionViewSource,然后使用带有多个GroupStyles的ListBox / DataGrid。这样做的净效果是叶子项目(在我的例子中,商店)被分为两个不同的级别。
切换哪个PropertyGroupDescriptor首先出现在CollectionViewSource中将改变结果树中哪个属性是“根”级别。
答案 1 :(得分:0)
您始终可以编写预处理数据的代码,并创建一组类以便于绑定。