防止父级上下文菜单的子继承

时间:2011-06-13 17:52:48

标签: c# wpf xaml contextmenu

根据此代码:

<StackPanel>
   <StackPanel.ContextMenu>
     <ContextMenu>
        <MenuItem Header="menuitem1"/>
        <MenuItem Header="menuitem2"/>
     </ContextMenu>
   </StackPanel.ContextMenu>

   <Button Width="100" Height="100"/>
   <Button Width="100" Height="100"/>
</StackPanel>

如果右键单击按钮,则会出现ContextMenu,子项将继承其父项的ContextMenu。
我的问题是如何阻止此功能?

编辑:如果可能,我需要在xaml中使用。

2 个答案:

答案 0 :(得分:4)

我找到了这个解决方案

<StackPanel>
   <StackPanel.ContextMenu>
     <ContextMenu>
        <MenuItem Header="menuitem1"/>
        <MenuItem Header="menuitem2"/>
     </ContextMenu>
   </StackPanel.ContextMenu>

   <Button Width="100" Height="100">
        <Button.ContextMenu>
            <ContextMenu Visibility="Hidden"/>
        </Button.ContextMenu>
   </Button>
   <Button Width="100" Height="100"/>
</StackPanel>

答案 1 :(得分:2)

在相关按钮上,您需要停止右键单击鼠标事件,直到包含StackPanel。您可以通过这样处理MouseDown来完成此操作:

void button_MouseDown(object sender, MouseButtonEventArgs e)
{
    if (e.RightButton == MouseButtonState.Pressed)
    {
        e.Handled = true;
    }
}