在WPF树视图中分组数据

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

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

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

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

谁能给我一些关于如何开始和使用哪些技巧的提示?

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

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

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

       

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

  • 如何在TreeView中显示分组数据?
  • 我该如何进行自定义分组?

检查 HierarchicalDataTemplate上的此链接 。 给出了使用各种类型的例子。