1

私はWPFアプリケーションを構築しており、PRISMパターンライブラリの使用を計画しています。ほとんどすべてのビューで、リストが表示または変更されます。このオブジェクトをどこに配置し、どのようにビューにフィードする必要がありますか。モジュールを1つだけ作成し、そのオブジェクトのリストにオブジェクトを作成し、ビューの作成時にオブジェクトをビューにフィードしてから、さまざまな領域に挿入する必要がありますか?それともそれを行うためのより良い方法はありますか?

4

2 に答える 2

1

Prismは、あなたがやろうとしていることのための非常に便利なパターンライブラリです。http://compositewpf.codeplex.com/をご覧になることをお勧めします。PrismとMVVMのアーキテクチャに関する多くの回答を見つけることができます。モジュールはいくつでも定義できますが、リストの表示や変更のようにビューが類似している場合、最良の方法は、あるビューから別のビューに何が変化しているかを識別することです。バインディング、プロパティ、またはラベル名のように、たとえばテンプレートT4からそれらの異なるビューを生成するために(またはそれらをすべて1つずつ再定義したい場合でも)それは1つの同じモジュールになりますが、たとえば異なるバインディングを持ちます。

複数のビューモデル間で情報を共有する場合(リージョン/モジュールに関係なく)、単一のリストコレクションを格納する共有サービスを実装し、そのサービスを各ビューモデルに挿入できます。次に、各ビューモデルにサービスを介してコレクション内のデータにアクセスさせます。これにより、コレクションでCRUD操作が実行されると、変更がすべてのビューモデルに反映され、すべてのビューにフィードできるようになります。

その共有サービスを使用して非共有エクスポートとしてエクスポートする場合、ObjectRepositoryの同じインスタンスがすべてのビューモデル間で共有されます。サービスのListプロパティを更新するときに、すべてのビューモデルにそれを使用させることができます。ユニティを使用する場合は、シングルトンインスタンスを使用してください。

共有サービスの詳細http://msdn.microsoft.com/en-us/library/ff921122%28v=PandP.40%29.aspx#sec7

于 2011-08-17T16:38:01.640 に答える
1
  1. 必要なモジュールは 1 つだけです。モジュールの考え方は、注文管理や顧客管理など、アプリケーションのさまざまな部分を分離することです。
  2. MVVM 用語に従うと、リストはモデルです。ListModel という名前を付けます。この ListModel は、1 つのビュー モデルでラップする必要があります。これは、ListViewModel という名前にすることができます
  3. すべてのビューには、ビュー モデルに対応する 1 つのビューがあります。これらのビュー モデルはすべて、ListViewModel への参照を持っています。ListViewModel はプロパティを介してビューに提供されるため、ビューはバインド パス DataContext.ListViewModel を使用して ListViewModel を参照できます。ビューがすべてビューモデルにバインドされている場合、モデルがデータで満たされているかどうかは関係ありません。
于 2011-08-17T16:20:38.643 に答える