问题描述
||
根据此代码:
<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>
, 在有问题的按钮上,您需要停止右键单击鼠标事件,直到扩展到包含的“ 2”。您可以这样处理MouseDown
来做到这一点:
void button_MouseDown(object sender,MouseButtonEventArgs e)
{
if (e.RightButton == MouseButtonState.Pressed)
{
e.Handled = true;
}
}