在最顶层窗口上启用上下文菜单

本文关键字:启用 上下文 菜单 窗口 | 更新日期: 2023-09-27 18:03:18

我有一个窗口与Topmost="True"

<Window ... bunch of code ....
    Topmost="True" >

现在这样做可以有效地禁用表单上的所有上下文菜单。菜单在XAML中定义,如下所示:

<StackPanel Width="120" Height="50" MouseMove="Drag_MouseMove">
    <Image Source="{Binding" />
    <TextBlock Text={Binding}" />
    <StackPanel.ContextMenu>
        <ContextMenu Name="myMenu" StaysOpen="True">
            ... bunch of code ... 
        </ContextMenu>
    </StackPanel.ContextMenu>
</StackPanel>

是否有重新启用上下文菜单的方法?我也愿意考虑Topmost="True"的替代方案。

在最顶层窗口上启用上下文菜单

我无法重现您的问题。我已经创建了一个新的项目,使用这个近代码到你的和上下文菜单显示。

也许问题出在别的地方?比如绑定?(从经验讲)

<Window x:Class="WpfApplication8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Topmost="True">
    <Grid>
        <StackPanel Width="120" Height="50" Background="Gray">
            <TextBlock Text="yo" />
            <TextBlock Text="yo" />
            <TextBlock Text="yo" />
            <TextBlock Text="yo" />
            <TextBlock Text="yo" />
            <TextBlock Text="yo" />
            <TextBlock Text="yo" />
            <TextBlock Text="yo" />
            <StackPanel.ContextMenu>
                <ContextMenu Name="myMenu" StaysOpen="True">
                    <MenuItem Header="hello" />
                </ContextMenu>
            </StackPanel.ContextMenu>
        </StackPanel>
    </Grid>
</Window>

我怀疑菜单显示得很好。然而,菜单并不是最顶层的项目,所以它位于最顶层主窗口的后面。我有同样的问题,还没有找到答案,如何确保菜单总是显示