在我的代码的 MainView 中,我有这个事件来捕获 keyDown:
#region Constructor
PreviewKeyDown += SoftKeyMainPreviewKeyDown;
#endregion
private void SoftKeyMainPreviewKeyDown(object sender, KeyEventArgs e)
{
var focusedElement = Keyboard.FocusedElement;
switch (e.Key)
{
case Key.Up:
DoSomething();
break;
.....
}
}
现在我想将它移到 XAML 中的 InputBindings 中。
我的第一次尝试:
<UserControl.InputBindings>
<KeyBinding Gesture="Up" Command="{Binding ElementName=_MaschinenView, Path=UpCommand}" />
....
</UserControl.InputBindings>
代码隐藏:
public ICommand UpCommand { get; set; }
UpCommand = new SimpleCommand { ExecuteDelegate = delegate { MoveFocusInDirection(Keyboard.FocusedElement, new TraversalRequest(FocusNavigationDirection.Up)); } };
没有任何事情发生。很可能 KeyDown-Event 由 Child-Element 处理。
是否可以在 InputBindings 中的 XAML 中设置 previewkeydown?而如何做到这一点呢?