Сгруппированный 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!

Другие вопросы по тегам