WPF アプリケーションでは、現在、ショートカット キーを使用してアプリケーション内の任意の場所で電卓ツール フォームを起動するコマンドをバインドしようとしています。コマンドを作成しましたが、コマンドとショートカット キーをマップしてアプリケーションでユニバーサル ショートカット キーを作成する方法がわかりません。前もって感謝します。
13702 次
2 に答える
7
これは xaml で実行できます。KeyBindingクラスのドキュメントの例を参照してください。
<Window.InputBindings>
<KeyBinding Command="ApplicationCommands.Open"
Gesture="CTRL+R" />
</Window.InputBindings>
更新: MVVM を使用している場合、xaml だけを使用して KeyBinding を ViewModel に実際にバインドすることはできないようです: こちらの Keybinding a RelayCommandを参照してください。
于 2009-08-23T20:45:01.163 に答える
4
WPF でショートカットを使用するには、それぞれのコントローラーにフォーカスする必要があります。ただし、InputManager を使用すると、アプリケーションのあらゆる種類の入力をキャプチャできます。ここでは、それぞれのコントローラーにフォーカスする必要はありません。
まず、イベントをサブスクライブする必要があります。
InputManager.Current.PreProcessInput -= Current_PreProcessInput;
InputManager.Current.PreProcessInput += Current_PreProcessInput;
それで、
private void Current_PreProcessInput(object sender, PreProcessInputEventArgs args)
{
try
{
if (args != null && args.StagingItem != null && args.StagingItem.Input != null)
{
InputEventArgs inputEvent = args.StagingItem.Input;
if (inputEvent is KeyboardEventArgs)
{
KeyboardEventArgs k = inputEvent as KeyboardEventArgs;
RoutedEvent r = k.RoutedEvent;
KeyEventArgs keyEvent = k as KeyEventArgs;
if (r == Keyboard.KeyDownEvent)
{
}
if (r == Keyboard.KeyUpEvent)
{
}
}
}
}
catch (Exception ex)
{
}
}
このように、不要なものをすべて除外して、必要な入力を取得できます。これはショートカット キャプチャ アプリケーション用であるため、KeyDown および KeyUp イベントのみを取得しました。
押されたキーのすべての詳細を取得することもできます
keyEvent.Key.ToString()
于 2016-08-05T05:19:13.473 に答える