Сгруппированный ComboBox показывает заголовки группы, но не элементы
Я пытаюсь сгруппировать ComboBox
с помощью GroupStyle
:
<ComboBox ItemsSource="{Binding GroupedItems}">
<ComboBox.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ComboBox.GroupStyle>
</ComboBox>
Здесь свойство "GroupedItems" является ListCollectionView
с применением "GroupDescription".
Это почти работает: заголовки верны, но сами элементы не появляются во всплывающем окне. Зачем?
Примечание: я использую модифицированную версию ComboBox
стили / шаблоны на MSDN.
1 ответ
Оказывается, что ComboBox
Шаблон управления на MSDN неверен, и документация также неверна. Я понял это после того, как удалил стили / шаблоны из моих ресурсов, и затем группировка показалась правильно.
После извлечения фактического встроенного шаблона управления с помощью Blend я обнаружил, что функциональность группировки ComboBox
полагается на следующие именованные части: "Popup" (не "PART_Popup", как указано в MSDN), "DropDown", "DropDownBorder", "DropDownScrollViewer" и "ItemsPresenter".
<Popup x:Name="Popup">
<Grid x:Name="DropDown">
<Border x:Name="DropDownBorder">
<ScrollViewer x:Name="DropDownScrollViewer">
<ItemsPresenter x:Name="ItemsPresenter" />
</ScrollViewer>
</Border>
</Grid>
</Popup>
Спасибо Обама! Microsoft!