Всплывающая подсказка ComboBox не отображается - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь следующий код:

<ComboBox x:Name="comboBox">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <CheckBox Content="{Binding}" ToolTip="This will never be shown, why?" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

Затем я присваиваю код ItemSource, выбираю элемент и пытаюсь навести курсор на выпадающий список. Результат - подсказка отсутствует.

Если я делаю то же самое с ListBox - для каждого элемента отображается подсказка. Если я открою ComboBox всплывающее окно - всплывающая подсказка отображается для каждого элемента.

Если я найду это:

Тогда в визуальном дереве нет CheckBox. Но предъявитель контента показывает это. Что происходит?

Конечно, я могу дополнительно связать ComboBox.Tooltip, например, с это SelectedValue или SelectedIndex.ToolTip, но он не будет работать всегда и зависит от содержимого и конфигурации ComboBox: это коллекция ComboBoxItems или, может быть, ItemsSource, используется ли ValuePath или нет и т. д.

Я хочу понять, почему нет CheckBox. И я хочу, чтобы отображалась всплывающая подсказка из таблицы данных.


Это может быть ошибка Snoop или что-то еще, но после открытия и закрытия ComboBox всплывающее окно и нажатие кнопки обновления в Snoop, наконец, показывает CheckBox:

Но тогда мой вопрос все же: почему всплывающая подсказка не отображается? Я вижу, что он там есть, но при наведении курсора ComboBox ничего не отображается.

1 Ответ

1 голос
/ 14 июня 2019

Почему всплывающая подсказка не отображается?

Поскольку элемент может появляться только один раз в дереве элементов, ComboBox создает визуальную копию CheckBox с помощью VisualBrush, а затем отображает клон в поле выбора: https://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Controls/ComboBox.cs,896

И Rectangle, в котором находится VisualBrush, не имеет Tooltip.

...