私のアプリでRelayCommandを使用しています。 viewmodelにコードを入れるのにはいいですが、私はコマンドにキーストロークをバインドするにはどうしたらいいですか?RelayCommandのキーバインド
RoutedUICommandにはInputGesturesプロパティがあり、キーストロークを押すと自動的にコマンドが呼び出されます。追加のボーナスとして、MenuItemにキーストロークを表示することさえできます。残念ながら、RoutedUICommandの余分なプロパティーのための再利用可能なインターフェースはありませんので、同じ魔法を得るRelayUICommandを作成することはできません。
私はすでにInputBindingsを使用して試してみた:
<Window.InputBindings>
<KeyBinding Key="PageUp" Command="{Binding SelectPreviousLayerCommand}"/>
</Window.InputBindings>
しかしKeyBinding.Commandは、依存関係プロパティではありませんので、それは、私に実行時例外を取得します。 (実際には、KeyBindingはDependencyObjectでさえないという不満があります。)また、RelayCommandはViewModelのプロパティであるため(RoutedUICommandが設計された静的フィールドとは対照的に)、データバインディングは私が知る唯一の方法ですそれをXAMLから参照する。
どうしたのですか?キーストロークをRelayCommandにバインドする最良の方法は何ですか?
.NET 4.0でKeyBindingクラスのCommandプロパティをバインドする方法については、http://tomlev2.wordpress.com/2009/10/26/vs2010-binding-support-in-inputbindings/ –
の記事に記載されています。 http://www.thomaslevesque.com/2009/10/26/vs2010-binding-support-in-inputbindings/ – avenmore