在WPF树视图中分组数据

时间:2010-07-16 08:52:02

标签: c# wpf data-binding treeview observablecollection

我想用两个分组选项(单选按钮)创建一个WPF TreeView。因此,数据将在两级层次结构中以两种不同的方式进行分组,最低级别是实际数据项,而这些组只是表示数据的一种方式,以便于理解。

他们也可以按组选择项目(复选框),但我已经弄明白了,例如如果我想表示数据库对象,并希望按模式或对象类型(表,视图,函数等)对它们进行分组。

我只是不知道如何开始这两种分组模式。每当分组模式发生变化或是否有更简单的方法时,我是否应该完全重构ObservableCollection

另外,如果第二级DataTemplate根据分组模式略有不同,例如按对象类型分组时,您需要在第2级显示架构,该怎么办?

任何人都可以给我一些关于如何开始和使用哪种技巧的提示?

2 个答案:

答案 0 :(得分:3)

通过在其CollectionViewSource上设置GroupDescriptions来对您的收藏进行分组。您可以通过执行以下操作在代码中执行此操作:

CollectionViewSource.GetDefaultView(yourCollection).GroupDescriptions.Add(
    new PropertyGroupDescription("PropertyName"));

或者您可以通过显式创建CollectionViewSource在XAML中执行此操作。

    <CollectionViewSource
        Source="{StaticResource yourCollection}"
        xmlns:dat="clr-namespace:System.Windows.Data;assembly=PresentationFramework">
        <CollectionViewSource.GroupDescriptions>
            <dat:PropertyGroupDescription PropertyName="PropertyName"/>
        </CollectionViewSource.GroupDescriptions>
    </CollectionViewSource>

如果您使用像ListBox这样的普通ItemsControl,那么您只需设置GroupStyle属性即可。如果你想使用TreeView,那么我认为你想绑定到ICollectionView上的Groups属性。您应该阅读Bea Stollnitz关于分组的博客条目:

答案 1 :(得分:0)

HierarchicalDataTemplate上的

Check this link。给出了各种类型的使用示例。