WPF组合框“选项组(optGroup)”类型行为

WPF组合框“选项组(optGroup)”类型行为,wpf,combobox,optgroup,Wpf,Combobox,Optgroup,我想要一个wpf组合框,它显示下拉列表框,其中的选项分组在一个标题下,就像html中的行为一样。以前有人做过类似的事情吗?请参阅。将分组应用于数据的CollectionView,然后在组合框上设置GroupStyle。完全使用XAML完成,它将如下所示: <StackPanel> <StackPanel.Resources> <CollectionViewSource x:Key="groupedData" Source="{Binding}

我想要一个wpf组合框,它显示下拉列表框,其中的选项分组在一个标题下,就像html中的行为一样。以前有人做过类似的事情吗?

请参阅。将分组应用于数据的CollectionView,然后在组合框上设置GroupStyle。完全使用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>
您可以通过使用自己的HeaderTemplate提供自定义设置来自定义分组数据的外观

见。将分组应用于数据的CollectionView,然后在组合框上设置GroupStyle。完全使用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>
您可以通过使用自己的HeaderTemplate提供自定义设置来自定义分组数据的外观