【发布时间】:2010-01-07 11:39:29
【问题描述】:
是否可以在 Silverlight 的 ItemsControl 或 Listbox 中对项目进行分组?这些控件绑定到 DomainDataSource。
或者是否有任何第三方控件可以执行此操作?
更新:
这就是我正在尝试创建的那种 UI。
【问题讨论】:
标签: silverlight listbox grouping itemscontrol
是否可以在 Silverlight 的 ItemsControl 或 Listbox 中对项目进行分组?这些控件绑定到 DomainDataSource。
或者是否有任何第三方控件可以执行此操作?
更新:
这就是我正在尝试创建的那种 UI。
【问题讨论】:
标签: silverlight listbox grouping itemscontrol
您可以通过使用绑定到PagedCollectionView 的嵌套ItemsControls 来做到这一点。
假设我有一个数据源 - MyItems - 带有字段:Category、Section 和 Option。我可以从 IEnumerable(of MyItems) 创建一个 PagedCollectionView 并告诉它要分组的字段。
Dim original As IEnumerable(Of MyItems) = GetMyItems()
Dim pcv = New PagedCollectionView(original)
pcv.GroupDescriptions.Add(New PropertyGroupDescription("Category"))
pcv.GroupDescriptions.Add(New PropertyGroupDescription("Section"))
然后我将我的第一个 ItemsControl 绑定到 PagedCollectionView
hisMyItems.ItemsSource = pcv.Groups
PCV 创建一个嵌套层次结构,如:
-Name
-Items
其中Name 是分组字段中的值,Items 包含该分组中的行/对象。如果您愿意,我想您也可以在 xaml 中创建 PCV。
xaml 看起来像:
<controls:HeaderedItemsControl x:Name="hisMyItems" Header="{Binding Name}" ItemsSource="{Binding Items}" >
<controls:HeaderedItemsControl.ItemTemplate>
<DataTemplate>
<controls:HeaderedItemsControl Header="{Binding Name}" ItemsSource="{Binding Items}" ItemsPanel="{StaticResource ItemsPanelTemplate1}" >
<controls:HeaderedItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Option}" />
</DataTemplate>
</controls:HeaderedItemsControl.ItemTemplate>
</controls:HeaderedItemsControl>
</DataTemplate>
</controls:HeaderedItemsControl.ItemTemplate>
</controls:HeaderedItemsControl>
我希望这是有道理的。我试图从我的实际应用程序中简化一些事情,但我可能在复制它时犯了一些错误。显然,您也可以使用普通的 ItemsControls 或其他控件,并使用模板等进行自定义。
【讨论】:
DataGrid 控件支持分组。
Tim Heuer 有一篇关于使用数据网格进行分组的好博客。 link text
【讨论】:
【讨论】:
【讨论】: