2009-07-16 10 views
1

MVVMアプリケーションには親ビューのViewModelがかなりたくさんあります。このような何か:MVVM:他のViewModelsの検索

SchoolsViewModel 
    +- SchoolViewModel 
     +- LessonViewModel 
      +- PupilsViewModel 
       +- PupilViewModel 
      +- TeacherViewModel 
     +- PupilsViewModel 
      +- PupilViewModel 
       +- LessonsViewModel 
     +- TeachersViewModel 

のように...また

は、単一のビューモデルは、ユーザが授業や生徒などで閲覧しているかどうかに応じて、複数の場所に現れることができます

どのようにして、異なる親ViewModels間で子ViewModelsの共有を許可しますか?例えば、「瞳孔A」は、最高レベルのPupilsViewModelと、LessonViewModelsに含まれるいくつかのPupilsViewModelに存在します。同じデータモデルを参照する複数のPupilViewModelオブジェクトを作成しますか?または、何らかの形でデータモデルの既存のビューモデルを探しますか?

この質問は、他の関連する質問があります:私は、ユーザーが1つの場所で瞳を更新したときに、その瞳は、アプリケーション内で他の場所に更新されている方法瞳孔Aのインスタンスを1つだけ持つことをお勧めMVVM and StructureMap usage

答えて

0

を。これを達成するには、各ViewModelにINotifyPropertyChangedを実装する必要がありますが、これはMVVMの標準的な方法です。

あなたのケースでは、アプリケーションのさまざまな部分にPupilsViewModel(コレクション)のさまざまなビューを提供するためにCollectionViewsを使用することをお勧めします。そうすることで、彼らは同じ基礎となるデータ上で動作していますが、アプリケーションのさまざまな部分がそれらを独立してナビゲートできます。

+0

素晴らしい提案! CollectionViewを使ってこの問題をうまく解決しました。ありがとう! – Grokys

0

DataTemplatesを使用して、各モデルにどのビューをバインドするかを定義してください。また、ビューでは、単に親ビューモデルのモデルプロパティにバインドされたContentPresenterを使用することができます。

私はトリックをすると思います。

関連する問題