Silverlight:DataGrid就像在ItemsControl中进行分组一样

Geo*_*ord 7 silverlight grouping listbox itemscontrol

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

或者是否有任何第三方控件执行此操作?

更新:

这是我想要创建的UI.

替代文字

Geo*_*ord 5

您可以使用嵌套ItemsControls绑定到PagedCollectionView来执行此操作.

说我有一个数据源- MyItems-与字段:Category,SectionOption.我可以创建一个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"))
Run Code Online (Sandbox Code Playgroud)

然后我把我的第一个绑ItemsControl到了PagedCollectionView

hisMyItems.ItemsSource = pcv.Groups
Run Code Online (Sandbox Code Playgroud)

PCV创建一个嵌套层次结构,如:

-Name
    -Items
Run Code Online (Sandbox Code Playgroud)

其中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>
Run Code Online (Sandbox Code Playgroud)

我希望这是有道理的.我试图从我的实际应用程序中简化一些事情,但我可能在复制它时犯了一些错误.显然你也可以使用普通的ItemsControls或其他控件,并使用模板等进行自定义.