在最顶层窗口上启用ContextMenu

时间:2011-07-21 15:27:09

标签: c# .net wpf

我有一个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"的替代方案。

2 个答案:

答案 0 :(得分:0)

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

也许问题来自别的东西?喜欢绑定? (从经验谈起)

<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>

答案 1 :(得分:0)

我怀疑菜单显示的很好。但是,菜单不是顶层项目,因此它最终位于最顶层的MainWindow之后。我遇到了同样的问题,还没有找到如何确保菜单始终显示的答案。