防止父代子女继承';的上下文菜单
本文关键字:上下文 菜单 继承 | 更新日期: 2023-09-27 17:59:07
根据此代码:
<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的方法。
我找到了这个解决方案
<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>
在有问题的按钮上,您需要停止鼠标右键单击事件传播到包含的StackPanel
。你可以这样处理MouseDown
:
void button_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.RightButton == MouseButtonState.Pressed)
{
e.Handled = true;
}
}