2012-05-06 9 views
1

同じデータをさまざまな方法(グリッド、テキストボックスなど)で表し、アプリケーションの異なる場所に表示するビューはほとんどありません。 すべてのビューが異なるView-Modelにバインドされています。異なるビューから同じコマンドを実行する - MMVM

私は、選択された行/ sにAdd-New、Update、Deleteなどのコマンドがあります。コマンドは、メインツールバー(異なるビュー)、そのビューのボタン、右クリックメニュー、およびその他の場所から、アクティブなビューで実行できます。 コマンドが表示される可能性があるすべてのシナリオで、コマンドを書き換えたくないです。 コマンドのコードを複製せずに、すべてのシナリオで大規模な切り替えを行うことなく、それをプリフォームする方法はありますか。

ありがとうございます。

答えて

1

コマンドを保持するCommandBindingsを1つのメインプレイス(たとえばウィンドウ) で使用し、そのスコープの下の各ビューまたはコントロールからコマンドを呼び出すことができます。 または、それぞれの特定のviewModelがコンストラクタで取得してバインドする "CommnadViewModel"を作成します。 Unityやその他のコンテナを使用する方がさらに簡単になります。

+0

Janushirsha、問題は私のアプリでそれのような多くのコマンドがあるということです。そして、すべてがどこにでも現れるわけではありません。したがって、コマンドのビューモデルの考え方は関係ありません。また、問題は、コマンド自体が選択された行などのビューモデルからのデータを使用していることです。 – OrrM

+0

こんにちは、本当にvmの間のrealtionsは通常、mvvm paternの機密ポイントです。すべてのコマンドを組み立てる必要はありませんが、それぞれの概念的な機能をカプセル化し、アプリケーション機構(メッセンジャーのようなもの)またはコマンドvmを呼び出すときに必要な情報を注入する必要はありません。 – Janushirsha

関連する問題