是否可以在WPF ComboBox下拉列表上绘制?

时间:2011-03-25 19:31:17

标签: c# wpf combobox

我正在开发一个记录用户输入的程序,通过在它们周围画一个框来装饰鼠标所在的UI组件是很有用的。

我这样做是通过在我正在录制的程序顶部创建一个透明窗口并在该窗口中绘图。

这适用于大多数程序,但在ComboBox下拉列表下绘制。看起来下拉列表是一个最顶层样式集的窗口。

我已经尝试将我的装饰窗口设置为最顶层,并且下拉列表仍然覆盖它。如果我定期将装饰窗口设置为最顶层且处于活动状态,则在激活装饰窗口时关闭下拉列表。我已尝试设置包含下拉菜单的Popup.StaysOpen的{​​{1}}属性,但这没有效果。

有没有办法让我在不修改菜单本身的情况下绘制下拉菜单?

感谢。

3 个答案:

答案 0 :(得分:2)

也许总是高于其他任何东西的Adorner Layer是最好的解决方案?

答案 1 :(得分:1)

您是否尝试使用弹出控件而不是窗口?我相信它与ComboBox DropDown在同一层上绘制,所以你应该能够设置ZIndex来绘制DropDown的顶层。

您可以通过向ComboBox添加样式来设置ComboBox的弹出式ZIndex

<ComboBox>
    <ComboBox.Resources>
        <Style TargetType={x:Type ComboBox}>
            <Setter Property="Canvas.ZIndex" Value="1" />
        </Style>
    </ComboBox.Resources>
<ComboBox>

答案 2 :(得分:1)

我能够通过将我的窗口ShowActivated设置为false,然后在弹出窗口打开后将其设置为Topmost来实现此功能。