首页 > 解决方案 > 不显示组合框工具提示

问题描述

我正在尝试以下代码:

<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到例如它的SelectedValueor SelectedIndex.ToolTip,但它不会总是起作用,并且取决于内容和配置:它是orComboBox的集合,它是否使用等等。ComboBoxItemsItemsSourceValuePath

我想了解为什么没有CheckBox. 我希望显示来自数据模板的工具提示。


这可能是一个错误Snoop或其他问题,但在打开和关闭ComboBox弹出窗口并点击其中的刷新按钮后Snoop,最终显示CheckBox

但是我的问题仍然存在:为什么没有显示工具提示?我可以看到它在那里,但是鼠标悬停ComboBox不显示任何内容。

标签: wpfcomboboxtooltipdatatemplate

解决方案


为什么不显示工具提示?

由于元素只能在元素树中出现一次,因此创建了使用 aComboBox的可视副本,然后在选择框中显示克隆:https ://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/ Windows/Controls/ComboBox.cs,896CheckBoxVisualBrush

Rectangle那个主机VisualBrush没有Tooltip.


推荐阅读