2012-04-18 10 views
6

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

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

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

もう1つの方法は、実際にテキストを実行するテキストボックスのKeyDownにバインドすることですが、実際にはコントロールからイベントをビューモデルのコマンドにルーティングする方法が本当に不安ですユーザーコントロールのコードビハインドで醜いハック。

すべてのポインタが高く評価されています!

+0

[WPFのキーボードショートカット](http://stackoverflow.com/questions/1361350/keyboard-shortcuts-in-wpf) –

+1

それは同じ行にありますが、実際にはそうではありません同じ質問。これは、標準コマンドをバインドする方法について述べています。これは、カスタムコマンドをビューモデルのプロパティにバインドします。解決策は類似していることが判明しましたが、依然として、異なるものです。 – Dervall

+0

@DanielHilgarth:ええ、私はそれが重複しているとは思っていません。あるいは、少なくとももう一つの質問で提供されている解決策は貧弱です(MVVMの問題に対するWinFormsの解決策です)。 – user7116

答えて

24

何らかの理由で消えた別の答えがありました。これはうまく機能しました:

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

可能であれば、その人にはクレジットを与えたいと思います。もう一度表示してください:)

2

Afaikでは、キー入力に直接バインドする方法はありませんが、いくつかの回避策があります。他の人たちもこの問題を抱えているようですが、this postを見ましたか?私の他の提案は、attached commandsを見ることです。

関連する問題