2013-11-19 4 views
1

У меня есть приложение WPF, и я пытаюсь связать индивидуальный жест ключа с командой. я пробовал:WPF keybinding gesture с HOME/END не работает

<KeyBinding Gesture="HOME" Command="customCommand"/> 
<KeyBinding Gesture="Ctrl + HOME" Command="customCommand"/> 
<KeyBinding Gesture="ctrl + Alt + HOME" Command="customCommand"/> 

Ни один из них не будет работать. но затем я попробовал

<KeyBinding Gesture="Ctrl + H" Command="customCommand"/> 

работал, как ожидалось.

Мне интересно, в чем разница между Ctrl+H и Ctrl+Home? Есть ли что-то внутри WPF, которое блокирует ключ HOME/End от запуска команд?

UPDATE: Я думаю, что нашел, почему он не работает. в основном мы определили привязку клавиш на самом верхнем уровне кадра. структура такова: Рама управления Tab Control Пользователь

Внутри пользовательского элемента управления, пользователь нажал кнопку HOME пытается вызвать команду верхнего уровня. но кажется, что управление вкладкой перехвачено и обработано командой. В этом случае кнопка HOME действительно фокусируется на первом элементе табуляции. есть способ обойти элемент управления вкладкой, чтобы кадр верхнего уровня мог непосредственно его обрабатывать?

+0

Опубликовать соответствующий XAML. Какой элемент пользовательского интерфейса вы используете для этих «KeyGestures»? –

+0

Если вы нашли ответ на этот вопрос, отправьте ответ или удалите свой вопрос. Не оставляйте его открытым навсегда. –

+0

Я столкнулся с одной и той же проблемой, используя «Дом», но не работал, но Ctl + H сделал ... поднял вопрос. –

ответ

0

TabControl обрабатывает ключ дома в методе OnKeyDown, затем он перемещает фокус на первый элемент табуляции.

Единственный способ обойти это поведение - создать собственный контроль, полученный из TabControl, и переопределить метод OnKeyDown. Например:

public void MyTabControl : TabControl 
{ 
    protected override void OnKeyDown(KeyEventArgs e) 
    { 
     if(e.Key != Key.Home) 
     { 
      base.OnKeyDown(e); 
     } 
    } 
} 

Это будет прекратить обработку Домашнего ключа по умолчанию TabControl.

+0

Команда My Home определена в Window.InputBindings моего MainWindow, и у меня такая же проблема. –

Смежные вопросы