我有一个场景,我有一个GroupBox
,里面有一些内容。我希望向ContextMenu
添加GroupBox
,并在用户右键单击框中的任意位置时显示该菜单。
我遇到的问题是只有在单击GroupBox
的边框或标题时才会显示上下文菜单。如果你点击框内的某个地方,那么父母的ContextMenu
就是显示的内容。
以下是一些演示此问题的XAML:
<Window x:Class="Dummy.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.ContextMenu>
<ContextMenu>
<MenuItem Header="Window menu" />
</ContextMenu>
</Window.ContextMenu>
<GroupBox Header="GroupBox">
<GroupBox.ContextMenu>
<ContextMenu>
<MenuItem Header="GroupBox menu" />
</ContextMenu>
</GroupBox.ContextMenu>
</GroupBox>
</Window>
因此,当您在GroupBox
内单击时,您总会看到“窗口菜单”,但我想要“组菜单”。
有谁知道为什么会这样,我可能会如何解决它?
非常感谢。
OJ
答案 0 :(得分:3)
组框基本上是带有标题标签的空边框。如果组框中没有内容,您的点击实际上会落在拥有Window
上,这就解释了“窗口菜单”即将出现的原因。如果您将一些内容放入完全填充它的组框中,您将看到组框上下文菜单始终显示:
<GroupBox Header="GroupBox">
<GroupBox.ContextMenu>
<ContextMenu>
<MenuItem Header="GroupBox menu"/>
</ContextMenu>
</GroupBox.ContextMenu>
<Label HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</GroupBox>
答案 1 :(得分:2)
实际问题是许多控件没有背景。我想你会发现,如果你为你的控件添加一个背景,你的上下文菜单就可以了。如果您不希望它显示
,您可以将背景设置为透明