【问题标题】:Catching Modifier-Keys in WPF ContextMenu在 WPF ContextMenu 中捕获修饰键
【发布时间】:2015-05-26 11:40:19
【问题描述】:

我想使用LeftAltRightAlt 键在打开的上下文菜单中更改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;。为什么是这样?如何捕捉 Alt 键并更改上下文菜单并使菜单保持打开状态?

【问题讨论】:

    标签: wpf contextmenu


    【解决方案1】:

    根据这篇文章 (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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2012-05-31
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2010-10-20
      相关资源
      最近更新 更多