我想用两个分组选项(单选按钮)创建一个WPF TreeView
。因此,数据将在两级层次结构中以两种不同的方式进行分组,最低级别是实际数据项,而这些组只是表示数据的一种方式,以便于理解。
他们也可以按组选择项目(复选框),但我已经弄明白了,例如如果我想表示数据库对象,并希望按模式或对象类型(表,视图,函数等)对它们进行分组。
我只是不知道如何开始这两种分组模式。每当分组模式发生变化或是否有更简单的方法时,我是否应该完全重构ObservableCollection
?
另外,如果第二级DataTemplate
根据分组模式略有不同,例如按对象类型分组时,您需要在第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。给出了各种类型的使用示例。