Silverlight:在ItemsControl中实现类似分组的DataGrid

7

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

或者是否有第三方控件可以实现这一点?

更新:

我正在尝试创建这种类型的UI。

alt text

3个回答

5
您可以使用嵌套的ItemsControls绑定到PagedCollectionView来实现此操作。

假设我有一个数据源 - MyItems - 其中包含字段:CategorySectionOption。 我可以从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
< p > 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或其他控件,并使用模板等进行自定义。


0

数据网格控件支持分组。

Tim Heuer在博客中介绍了如何使用数据网格进行分组。 链接文本


是的,我知道,但是数据网格并不适合我想要的。我想要为每一行显示一个单独的控件(例如按钮),但这些控件需要水平换行而不是垂直换行。因此,在ItemsControl中,您可以设计ItemsPanel以使用wrappanel,但我无法看到在datagrid中实现这一点的方法。 - Geoff Appleford

0

也许你真正需要的控件是工具包中的手风琴控件。

在这里可以查看手风琴控件的样例here

请注意,实际外观与其他控件一样可自定义样式。基本功能是将本来直接列出的项目分组为类别。


谢谢,我会看一下。不过我不确定这个能否支持从域数据源进行分组。另外我需要多于一个层级的分组。 - Geoff Appleford
嗯,我从您对Stephen的评论中看到了您真正的需求和问题。但是,“分组”的概念与“Wrappanel”样式布局如何兼容并不清楚?我建议您编辑您的问题,明确陈述您想要实现的实际UI。 - AnthonyWJones
@AnthonyWJones- 我已经添加了一个我想要创建的图像。我正在寻找一个使用数据绑定来完成这个控件,但看起来我只能手动编写一些代码来创建UI。 - Geoff Appleford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接