C# 是否可以在WPF组合框下拉列表的顶部绘制?

C# 是否可以在WPF组合框下拉列表的顶部绘制?,c#,wpf,combobox,C#,Wpf,Combobox,我正在开发一个记录用户输入的程序,能够通过在鼠标上画一个框来装饰UI组件是很有用的 我通过在我正在录制和绘制的程序顶部创建一个透明窗口来实现这一点 这适用于大多数程序,但在组合框下拉列表下绘制。该下拉列表似乎是一个具有最顶层样式集的窗口 我也试着将我的装饰窗口设置为最顶部,但下拉框仍然会覆盖它。如果我定期将装饰窗口设置为最顶部并处于活动状态,则当我激活装饰窗口时,下拉列表将关闭。我已尝试设置包含下拉菜单的弹出窗口的Popup.StaysOpen属性,但没有效果 我有没有办法在不修改菜单本身的情况

我正在开发一个记录用户输入的程序,能够通过在鼠标上画一个框来装饰UI组件是很有用的

我通过在我正在录制和绘制的程序顶部创建一个透明窗口来实现这一点

这适用于大多数程序,但在组合框下拉列表下绘制。该下拉列表似乎是一个具有最顶层样式集的窗口

我也试着将我的装饰窗口设置为最顶部,但下拉框仍然会覆盖它。如果我定期将装饰窗口设置为最顶部并处于活动状态,则当我激活装饰窗口时,下拉列表将关闭。我已尝试设置包含下拉菜单的
弹出窗口的
Popup.StaysOpen
属性,但没有效果

我有没有办法在不修改菜单本身的情况下画出下拉菜单


谢谢。

您是否尝试过使用弹出控件而不是窗口?我相信它与ComboBox下拉列表绘制在同一层上,因此您应该能够设置ZIndex以绘制下拉列表的顶部

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

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

您是否尝试过使用弹出控件而不是窗口?我相信它与ComboBox下拉列表绘制在同一层上,因此您应该能够设置ZIndex以绘制下拉列表的顶部

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

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


也许最重要的解决方案是

也许最重要的解决方案是

我可以通过将我的窗口的
ShowActivated
设置为false,然后在弹出窗口打开后将其设置为
top

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

使用边框、模板和触发器组合不是更好吗?与其使用另一个窗口,不如使用边框、模板和触发器的组合来实现这一点?而不是使用另一个窗口…?+1表示装饰层。这正是它们的用途,您不必担心在用户Alt+选项卡退出应用程序后,装饰器窗口仍然打开等问题。装饰器层为+1。这正是它们的用途,您不必担心在用户Alt+选项卡退出应用程序后装饰器窗口仍然打开等问题。