![](/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.