WPF ComboBox "опция группы (optGroup)" тип поведения - PullRequest
1 голос
/ 23 августа 2010

Я хочу иметь комбинированный список wpf, который отображает выпадающий список с опциями, сгруппированными под заголовком, как поведение

в html.Кто-нибудь, кажется, что-то подобное сделано раньше?

1 Ответ

4 голосов
/ 23 августа 2010

См. Как: сортировать и группировать данные с использованием представления в XAML .Вы применяете группировку к CollectionView для своих данных и затем устанавливаете GroupStyle на ComboBox.Сделано полностью в XAML, это будет выглядеть так:

<StackPanel>
    <StackPanel.Resources>
        <CollectionViewSource x:Key="groupedData" Source="{Binding}">
            <CollectionViewSource.GroupDescriptions>
                <PropertyGroupDescription PropertyName="Length"/>
            </CollectionViewSource.GroupDescriptions>
        </CollectionViewSource>
    </StackPanel.Resources>
    <ComboBox ItemsSource="{Binding Source={StaticResource groupedData}}">
        <ItemsControl.GroupStyle>
            <x:Static Member="GroupStyle.Default"/>
        </ItemsControl.GroupStyle>
    </ComboBox>
</StackPanel>

Или вы можете применить группировку в коде:

this.DataContext = new List<string>() { "foo", "barr", "baz", "fizz" };
var cv = CollectionViewSource.GetDefaultView(this.DataContext);
cv.GroupDescriptions.Add(new PropertyGroupDescription("Length"));

И использовать представление коллекции по умолчанию в Xaml:

<ComboBox ItemsSource="{Binding}">
    <ItemsControl.GroupStyle>
        <x:Static Member="GroupStyle.Default"/>
    </ItemsControl.GroupStyle>
</ComboBox>

Вы можете настроить внешний вид сгруппированных данных, предоставив пользовательский GroupStyle со своим собственным HeaderTemplate.

...