代码之家  ›  专栏  ›  技术社区  ›  Daniel

WPF组合框“option group(optGroup)”类型行为

  •  1
  • Daniel  · 技术社区  · 15 年前

    我想要一个wpf组合框,它显示下拉列表框,其中的选项分组在一个标题下,如<optgroup>html中的行为。以前有人做过这种事吗?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Quartermeister    15 年前

    看到了吗 How to: Sort and Group Data Using a View in XAML . 将分组应用于数据的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>
    

    您可以通过提供自定义的 GroupStyle 用你自己的头模板。