![](/img/trans.png)
[英]Detecting when 2 (or more) modifier keys are down c# wpf key down event
[英]All WPF context menus do not seem to handle highlighting items properly when a modifier key is held down
MenuItem 会在按下某个键时设置一个内部标志,以暂时停止注册鼠标事件,而不管它是否实际上是一个执行导航的键。 这反映了我所看到的行为,即当我按住任何键时,选择会断断续续,而不仅仅是修饰符。 https://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/windows/Controls/MenuItem.cs,2049
由于它是私有的,因此没有正确的方法来解决这个问题。 但是,如果它很重要,您可以为所有MenuItem
添加 KeyDown 处理程序,然后使用反射更改它
var menu = sender as MenuItem;
if (menu != null)
{
var parent = ItemsControl.ItemsControlFromItemContainer(menu);
MethodInfo setBoolField = menu.GetType().GetMethod("SetBoolField",
BindingFlags.NonPublic | BindingFlags.Static);
setBoolField.Invoke(this, new object[] { parent, 0x04, false });
}
如果需要,您可以先检查该键是否为导航键以保留所需的行为。
我个人认为这是 WPF 中的一个错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.