私のコードの 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 イベントは子要素によって処理されます。
InputBindings の XAML で previewkeydown を設定することは可能ですか? そして、これはどのように達成できますか?