Эти специальные клавиши называются ключами-модификаторами, и это должно ясно дать понять, почему он не работает. Модификатор Ключ должен «модифицировать» поведение данного ключа, например 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);
}
Конечно, ку также мог бы запустить вашу команду в этом коде.