我想使用LeftAlt
和RightAlt
键在开放的ContextMenu中更改MenuItems
。我希望这一切都在菜单已经打开时发生 - 而不是在单击鼠标右键打开上下文菜单时。我做了以下事情:
ContextMenu.KeyDown += ContextMenu_KeyDown;
void ContextMenu_KeyDown(object sender, KeyEventArgs e)
{
if( e.Key == Key.LeftAlt || e.Key == Key.RightAlt )
{
e.Handled = true;
// DEMO
MenuItem firstItem = this.ContextMenu.Items[0] as MenuItem;
if( firstItem != null ) firstItem.Header = "Alt Pressed!";
}
}
不幸的是,这不起作用。只要按下Alt键,即使我使用e.Handled = true;
,ContextMenu也会关闭。为什么是这样?如何捕获Alt-Keys并更改上下文菜单并使菜单保持打开状态?
答案 0 :(得分:0)
根据这篇文章(WPF: When Alt key is pressed, my ContextMenu won't open),它是MenuBase类的内置行为。您需要选择另一个修改键才能完成此操作。
以下是解释它的MSDN页面:https://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.menubase.onkeydown.aspx