7

是否可以在 Silverlight 的 ItemsControl 或 Listbox 中对项目进行分组?这些控件绑定到 DomainDataSource。

或者是否有任何第三方控件可以做到这一点?

更新:

这是我正在尝试创建的那种 UI。

替代文字

4

4 回答 4

5

您可以通过使用嵌套ItemsControls绑定到PagedCollectionView来做到这一点。

假设我有一个数据源 -MyItems带有字段CategorySectionOption. 我可以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"))

然后我将我的第一个绑定ItemsControlPagedCollectionView

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 或其他控件,并使用模板等进行自定义。

于 2011-03-08T17:50:26.327 回答
0

DataGrid 控件支持分组。

Tim Heuer 有一篇关于使用数据网格进行分组的好博客。 链接文本

于 2010-01-07T16:04:55.730 回答
0

也许您真正需要的控件是Toolkit中的 Accordian Control 。

请参阅此处的手风琴行为示例。

请注意,实际外观与任何其他控件一样可样式化。基本功能是对项目的类别进行分组,否则这些项目将是一个简单的列表。

于 2010-01-07T18:14:08.383 回答