我想要一个 wpf 组合框,它显示下拉列表框,其中选项分组在一个标题下,如 html 中的 <optgroup> 行为。以前有人做过类似的事情吗?
1942 次
1 回答
4
请参阅如何:使用 XAML 中的视图对数据进行排序和分组。您将分组应用于数据的 CollectionView,然后在 ComboBox 上设置 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 的自定义GroupStyle来自定义分组数据的外观。
于 2010-08-23T12:59:58.687 回答