これが良い方法かどうかはわかりませんが、ViewModel で未処理のキーストロークをすべて処理する必要があるため、ShellView で未処理のキーストロークをすべて ViewModel にリレーする動作を使用することを考えました..
しかし、問題は、未処理のキー押下をすべて取得するにはどうすればよいですか?
これが私の最初の試みです。
Public Class ForwardKeyBehavior
Inherits Behavior(Of DependencyObject)
Protected Overrides Sub OnAttached()
Keyboard.AddKeyDownHandler(Me.AssociatedObject, AddressOf OnKeyPressed)
Keyboard.AddPreviewKeyDownHandler(Me.AssociatedObject, AddressOf OnPreviewKeyPressed)
MyBase.OnAttached()
End Sub
Protected Overrides Sub OnDetaching()
Keyboard.RemoveKeyDownHandler(Me.AssociatedObject, AddressOf OnKeyPressed)
MyBase.OnDetaching()
End Sub
Private Sub OnPreviewKeyPressed(ByVal sender As Object, ByVal e As KeyEventArgs)
End Sub
Private Sub OnKeyPressed(ByVal sender As Object, ByVal e As KeyEventArgs)
If (Not e.Handled) Then
Trace.Write(e.Key.ToString())
End If
End Sub
End Class
しかし、 e.Handled は常に false であるように見えるので、テキストボックスでキーを押しても何が欠けていますか?