2012-05-15 2 views
1

Я пытаюсь связать Left ALT ключ с помощью команды для отображения видимости меню в WPF. Но он не работает .. Команда не стрелять ..LeftAlt Keybinding в WPF

<Window.InputBindings> 
     <KeyBinding 
      Key="LeftAlt" 
      Command="{Binding Path=MenuVisibilitySetCommand}"/> 
</Window.InputBindings> 

Я заметил, что другие специальные клавиши (например, Alt, Ctrl и т.д ..) тоже не работает здесь ..

Как сделать KeyBinding для специального ключа в WPF?

ответ

2

Эти специальные клавиши называются ключами-модификаторами, и это должно ясно дать понять, почему он не работает. Модификатор Ключ должен «модифицировать» поведение данного ключа, например Shift + L делает прописную букву «L», где только клавиша L делает строчную букву «l». Использование Modifierkeys для реальной логики может быть проблематичным и раздражающим, потому что пользователь не привык видеть реальные действия, происходящие при нажатии этих кнопок. Но я согласен, что есть места, где это имеет смысл, например. выделяя MenuItems при нажатии клавиши ALT.

Но к вашей реальной проблеме: вы можете использовать codebehind и OnKeyDown/OnKeyUp или события Preview для реализации этого поведения.

protected override void OnKeyDown(KeyEventArgs e) 
    { 
     if(e.SystemKey == Key.LeftAlt) 
     { 
      myMenu.Visibility = Visibility.Visible; 
      // e.Handled = true; You need to evaluate if you really want to mark this key as handled! 
     } 

     base.OnKeyDown(e); 
    } 

Конечно, ку также мог бы запустить вашу команду в этом коде.

5

Чтобы LeftALt работал так, вам также необходимо установить Modifiers на Alt.

<KeyBinding Key="LeftAlt" Modifiers="Alt" Command="{Binding Path=MenuVisibilitySetCommand}"/> 
Смежные вопросы