Я пытаюсь привязать четыре клавиши со стрелками к команде в моем ViewModel
, но они не работают.У меня есть ContentControl
в Window
с InputBindings
примерно так:
<ContentControl.InputBindings>
<KeyBinding Command="{Binding EndCmd}" Key="Esc" />
<KeyBinding Command="{Binding PanUpCmd}" Key="Up" />
<KeyBinding Command="{Binding PanDownCmd}" Key="Down" />
<KeyBinding Command="{Binding PanLeftCmd}" Key="Left" />
<KeyBinding Command="{Binding PanRightCmd}" Key="Right" />
</ContentControl.InputBindings>
В моем ViewModel
:
public RelayCommand EndCmd { get; set; }
public RelayCommand PanUpCmd { get; set; }
public RelayCommand PanDownCmd { get; set; }
public RelayCommand PanLeftCmd { get; set; }
public RelayCommand PanRightCmd { get; set; }
public MainViewModel()
{
EndCmd = new RelayCommand(End);
PanUpCmd = new RelayCommand(PanUp);
PanDownCmd = new RelayCommand(PanDown);
PanLeftCmd = new RelayCommand(PanLeft);
PanRightCmd = new RelayCommand(PanRight);
}
//functions that the commands call here
Теперь клавиша Escape работает нормально,но четыре клавиши со стрелками нет.Почему это?Они настроены точно так же.Я подумал, может быть, это как-то связано с DataContext
, поэтому я поместил KeyBinding
s в Window s
InputBindings`, но это была та же проблема.
Редактировать: я тестировал каждый ключна моей клавиатуре.Каждая клавиша срабатывает правильно, кроме четырех клавиш со стрелками.Я проверил, проглатывал ли Content
из ContentControl
события, и это не было.На самом деле, Control
, то есть Content
, имеет свое собственное событие нажатия клавиш, которое также никогда не вызывается и не является previewkeydown с помощью клавиш со стрелками.