2010-11-21 13 views
9

RoutedCommandとRoutedUICommandには多くのことがあります。テキストとキーボードジェスチャーのサポートが焼き付けられています。 RoutedUICommandのコレクションをMenuのItemsSourceにバインドすると、メニュー項目が自動的に作成されバインドされます。いくつかのコマンド(切り取り、コピー、貼り付け)は、すぐに使用できるコントロールによって自動的にサポートされています。RoutedCommandでうまくいくMVVMフレームワークはありますか?

しかしMVVMを使用するたびに、繰り返しの定型的なXAMLとそれぞれのコードビハインドのために、ルーティングされたコマンドが不適切なものであることがわかりました。私がMVVMをやっているとき、私は通常、ルーティングされたコマンドの代わりにRelayCommandを使用して巻き上げました。これはいくつかの適切な回避策ですが、欠点があります。たとえば、キージェスチャーはmuch more complicatedになります。

しかし、Rob Eisenbergのセッション"Build your own MVVM Framework"を見て、私はもはやリレーコマンドとその欠点に満足していません。ルーティングされたコマンドの唯一の問題は、反復的な定型コードでした。その繰り返しコードをフレームワークに組み込んで規約を適用すると、MVVMでルーティングされたコマンドを使用しない理由はなくなりました。

技術的には、これは難しくないようです。フレームワークは、ビューのCommandManager.CanExecuteイベントとExecutedイベントにバインドするだけで、ViewModelのメソッドやプロパティを検索するための規則を適用する必要があります。たとえば、Cutコマンドが実行されたときに、ExecuteCutメソッド(およびCanExecuteCutプロパティ)をon ViewModel私はこれを簡単にした独自のMVVMフレームワークを構築することができました。

しかし、私の質問は、ですが、既にMVCフレームワークはRoutedCommandで動作していますか?私が熟知している唯一のMVVMフレームワークは、Caliburn.Microです。この方法では、現在、ルーティングされたコマンドをサポートしていません(それは、独自のアクションバブリングをサポートしているので、私を驚かせるものです)。

答えて

1

私が正しく覚えていれば、Sacha Barberはその方向で何かをしました。私はあなたが一見を見ることができると思いますhere

+1

ウェブサイトでは、ルーティングされたイベントについて何も言及していません。私はソースコードを一見しましたが、そこに関連するものはないように見えます。 –

2

SOと他のサイトのリサーチマラソンがたくさんあり、RoutedCommandで再生するための適切なフレームワークが見つかりませんでした。

しかし、WPF Disciple Josh Smithの1つは、MVVMでルーティングコマンドを使用する優れたソリューションを実装しています。

MVVMアーキテクチャでRoutedCommandsを使用するには、清潔で軽量であると記載されているUsing RoutedCommands with a ViewModel in WPFを確認できます。

関連する問題