わかりました。これがどのように機能するかはわかりませんが、私のアプリでは、キー ジェスチャ (Ctrl+K) を RoutedCommand にバインドしています。アプリのどこに注目しても、キーの組み合わせは機能しますが、Web ブラウザー コントロールを含む WindowsFormsHost 内で使用する場合を除きます。Web ブラウザー コントロールの PreviewKeyDown イベントをキャプチャし、IsInputKey を false に設定してみました。これにより、理論的には、ホストはキー ジェスチャが未処理であると見なし、上方に送信する必要がありますが、そうはなりません。
アップデート:
コントロールの bool IsInputKey (Keys keyData) をオーバーライドして false を返すと、機能し、コマンドが正常に実行されます。
PreviewKeyDown の処理方法に何か問題があるのでしょうか?
private void browser_PreviewKeyDown (object sender, PreviewKeyDownEventArgs e)
{
e.IsInputKey = false;
}
これにより、メイン ウィンドウから任意のキーの組み合わせをキャプチャできるようになると期待していました。コントロールを拡張するよりも、イベント処理でこれを修正したい...