考虑以下XAML:
<Window x:Class="ContextMenuEvent.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" ContextMenuOpening="Window_ContextMenuOpening">
<Grid>
<Button>Ok</Button>
</Grid>
</Window>
右键单击该按钮会导致ContextMenuOpening触发,即使实际上没有出现上下文菜单也是如此。
为什么会这样呢?仅当上下文菜单真正打开时,我该怎么做才能获得偶数?
我知道我可以使用ContextMenu.Opened事件,但这只会覆盖单个上下文菜单,并且我想覆盖表单中的所有(现有)上下文菜单。
最佳答案
不太确定为什么要使用这种方法。但是,您可以轻松检查是否会出现上下文菜单。像这样:
private void Window_ContextMenuOpening(object sender, ContextMenuEventArgs e) {
var menu = (e.Source as FrameworkElement).ContextMenu;
if (menu != null) {
// etc..
}
}
关于c# - 即使控件未定义ContextMenu,也会引发ContextMenuOpening事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5856660/