Silverlight: Datagrid, как группировка в ItemsControl - PullRequest
7 голосов
/ 07 января 2010

Можно ли сгруппировать элементы в ItemsControl или Listbox в Silverlight? Эти элементы управления связаны с DomainDataSource.

Или есть какие-либо сторонние элементы управления, которые делают это?

UPDATE:

Это своего рода интерфейс, который я пытаюсь создать.

alt text

Ответы [ 4 ]

5 голосов
/ 08 марта 2011

Вы можете сделать это, используя вложенную 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

где Name - это значение в сгруппированном поле, а Items содержит строки / объекты в этой группировке. Я думаю, вы также можете создать PCV в xaml, если хотите.

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 голосов
/ 07 января 2010

Возможно, вы действительно ищете элемент управления Accordian Control из Toolkit .

См. Пример поведения Аккорда здесь .

Обратите внимание, что фактический внешний вид такой же стильный, как и любой другой элемент управления. Основная функция состоит в группировании категорий элементов, которые в противном случае были бы простым списком.

0 голосов
/ 11 сентября 2010
0 голосов
/ 07 января 2010

Элемент управления DataGrid поддерживает группировку.

У Тима Хойера есть хороший блог по группировке с сеткой данных. текст ссылки

...