是否可以在 Silverlight 的 ItemsControl 或 Listbox 中对项目进行分组?这些控件绑定到 DomainDataSource。
或者是否有任何第三方控件可以做到这一点?
更新:
这是我正在尝试创建的那种 UI。
是否可以在 Silverlight 的 ItemsControl 或 Listbox 中对项目进行分组?这些控件绑定到 DomainDataSource。
或者是否有任何第三方控件可以做到这一点?
更新:
这是我正在尝试创建的那种 UI。
您可以通过使用嵌套ItemsControls
绑定到PagedCollectionView来做到这一点。
假设我有一个数据源 -MyItems
带有字段Category
:Section
和Option
. 我可以PagedCollectionView
从一个创建一个IEnumerable(of MyItems)
并告诉它要分组的字段。
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
whereName
是分组字段中的值,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 有一篇关于使用数据网格进行分组的好博客。 链接文本