2012-01-11 12 views
1

WPFの新機能。私はL2SエンティティであるProductモデルを持っています。 WPFでアプリケーション情報を編集して、古いWindowsフォームアプリケーションを置き換える可能性があるアプリケーションを作成しています。アプリケーションは、パッケージ化、マーケティング、写真、建設などのタブの数をタブコントロールがあります。複数のビュー間の共通モデル

私はMVVMシステムでこれをどのように構造化しますか?タブごとに別々のビューを持っていますが、それぞれのビューモデルは、Productモデルの特定のサブセットに関連しています。または、タブコントロールとすべてのフィールドと単一のビューモデルを使用して単一のビューを作成して、そのモデル全体を包括しますか?それとも私はそれについて完全に間違っていますか?

私は最初の選択肢があると思いますが、複数のビューモデルで同じモデルを共有する方法がわかりません。誰も私のためにこれについていくつかの光を当てることができますか?ページ上のデータの

--Edit--

例: マーケティングは、このような機能、アプリケーション、および相互参照など、いくつかのテキストフィールド、およびいくつかのサブセットのエンティティのコレクションを持っています。 写真は、製品の写真のコレクションを扱っています パッケージ化と建設はそれぞれ、製品のそれぞれの情報に関連するテキストフィールド/コンボ/チェックボックスの大規模なコレクションです

+1

各タブに表示されている情報がないと言うのは難しいですか? 'マーケティング、写真、建設'? – sll

+0

ViewModelBaseをすべて継承するPackagingViewModel、MarketingViewModelなどでViewModelBaseを作成する人もいます。私は、ViewModelsの1つを実装し、次に別の実装を実装するとします。それに応じてViewModelBaseに共通のプロパティをリファクタリングします。 –

答えて

2

あなたが提供した最小限の情報で、次のソリューション:

  1. メインProductViewビューの各タブの
  2. 別のビュー
  3. メインコンテナのViewModel:ProductViewModel
  4. 複雑なタブの場合はビューモデルも分離します。たとえば、あなたはとてもProductViewModelpublic PackagingViewModel Packaging財産
  5. ProductViewModelを公開する必要があります別のPackagingViewModelを持つことになり、すべてのモデルに関連したもの(おそらくいくつかのサービス、モデルのエンティティ、など)を受け入れ、その後、他のすべての子ビューモデルを初期化する必要があります。
+0

お返事ありがとうございます。まだ少し混乱しています。私は 'ProductViewModel'のプロパティを介してすべてのタブビューモデルを公開し、それを' ProductView'に接続します。タブビューは、親のビューモデルのプロパティをどのように見ますか?子ビューは親ビューのデータコンテキストを知らないのですか? – Nick

関連する問題