4

現在フォーカスがどこにあるかに関係なく、アプリケーション全体で使用できるようにしたいキーボード ショートカットがいくつかあります。

現時点<Window.InputBindings>では、メイン ウィンドウの XAML のように定義されています。すべては問題ありませんが...
リボンは別の UserControl としてカプセル化されており、すべてのショートカットは当然、そのリボンにあるボタンに関連付けられています。
したがって、同じ機能を処理する 2 つのアプリケーション ロジックが 2 つのクラスにまたがっているという匂いはあまり好きではありません。

理想的には、KeyBindings を として定義したいと思いますが<Window.InputBindings>、ウィンドウではなく UserControl で定義します。明らかに、これは XAML 構文では実行できませんが、<UserControl.InputBindings>残念ながら、フォーカスがリボンにある場合にのみ使用できるようになります (これはneverを意味します)。

助言がありますか?

ありがとう、アレックス

4

1 に答える 1

2

コントロールのコンストラクターまたはその Loaded() イベント ハンドラーで、それが立っているウィンドウを見つけて (GetType が Window... になるまで VisualTreeHelper.GetParent(this) を再帰的に使用します)、必要な InputBindings をそれに追加します。窓。

于 2011-11-27T10:24:32.947 に答える