在WPF树视图中分组数据

Koe*_*oen 5 c# data-binding wpf treeview observablecollection

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

他们也可以按组选择项目(复选框),但我已经弄清楚了这一部分,例如,如果我想表示数据库对象,并希望按模式或对象类型(表,视图,函数,等等.).

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

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

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

Qua*_*ter 4

通过在 CollectionViewSource 上设置GroupDescriptions对集合进行分组。您可以通过执行以下操作在代码中完成此操作:

CollectionViewSource.GetDefaultView(yourCollection).GroupDescriptions.Add(
    new PropertyGroupDescription("PropertyName"));
Run Code Online (Sandbox Code Playgroud)

或者,您可以通过显式创建CollectionViewSource在 XAML 中完成此操作。

    <CollectionViewSource
        Source="{StaticResource yourCollection}"
        xmlns:dat="clr-namespace:System.Windows.Data;assembly=PresentationFramework">
        <CollectionViewSource.GroupDescriptions>
            <dat:PropertyGroupDescription PropertyName="PropertyName"/>
        </CollectionViewSource.GroupDescriptions>
    </CollectionViewSource>
Run Code Online (Sandbox Code Playgroud)

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

  • 两个链接都失效了。 (9认同)