7

UserControlツールバー付きのアプリケーションがあります。このツールバーにはボタンがあり、そのコマンドは、ビューモデルがプロパティとして公開する派生クラスにExecuteバインドされています。ICommand

<Button Grid.Row="0" Command="{Binding ExecuteCommand}">Execute</Button>

F5ここで、これをキーボードショートカット( )にもバインドしたいと思います。これは、sinceのコンテキストでバインドする必要がありますUserControl。これは、このユーザーコントロールが現時点で表示されている場合にのみ適用できます。

もう1つのオプションは、KeyDown実行するテキストが実際に含まれているテキストボックスにバインドすることですが、コードを実際に醜いハックすることなく、イベントをコントロールからビューモデルのコマンドにルーティングする方法に関しては、私は本当に不安定です。 -ユーザーコントロールの背後。

どんなポインタでも大歓迎です!

4

2 に答える 2

25

なんらかの理由で消えた別の答えがありました。これはうまくいきました:

<UserControl.InputBindings>
  <KeyBinding Key="F5" Command="{Binding ExecuteCommand}" />
</UserControl.InputBindings>

できればその男にクレジットを与えたいと思います。もう一度現れてください:)

于 2012-04-18T12:43:23.327 に答える
2

Afaik、キープレスに直接バインドする方法はありませんが、いくつかの回避策があります。他の人もこの問題を抱えているようですが、この投稿を見たことがありますか?私の他の提案は、添付されたコマンドを調べることです。

于 2012-04-18T12:35:57.570 に答える