2010-11-24 17 views
0

MemberListViewModelとMemberEditViewModelで使用されるMemberRepositoryという名前のリポジトリがあります。リポジトリには、私のGetMember()、CreateMember、SaveMember、Rollback()、およびDeleteMember()があります。リポジトリパターンとMVVMについての質問

私のアプリ全体には、コンボボックスを埋め込む多数のルックアップテーブルがあります。例ステータス、取引コード、エージェント、ユーザーなどGetUsers、GetStatuses()、GetTradeCodes()メソッドはどこに配置しますか?それらが使われている適切なリポジトリでは?

たとえば、メンバービューモデルでは、ステータス、取引コード、クラスなどのリストが必要です。したがって、私はMemberRepositoryでこれらの取得を行いますか?

ビル

答えて

0

OK]をので、あなたのMemberListViewModelは、リストページのためであり、あなたのMemberEditViewModelは、編集ページです。あなたはそれぞれが必要となるすべてのリポジトリでこれらを注入し、彼ら

  • ListMembersTask
  • EditMemberTask

:私はどうなるのか

は、私のモデルでは、以下のクラスを公開しています各タスクを実行している抽象的なものに必要なプロパティとメソッドを公開します。たとえば、ListMembersTaskには、CreateMember()というメソッドがあり、新しいEditMemberTaskが空のMemberオブジェクトで初期化されます。

あなたのViewModelに適切なタスクが注入されます(MemberListViewModelにはListMembersTaskなどが注入されます)。 MemberListViewModelRelayCommandとなり、CreateMember()となり、返されたのはEditMemberTaskで、MemberEditViewModelに挿入され、新しいMemberEditViewModelが発表者に渡されました。

この方法に従うと、リポジトリは永続性の原因となります。タスクはセッション中にビジネスロジックの状態をラップアップし、ビューモデルはタスクをバインド可能にするだけです。

私が取り組んできた次のステップは、タスク固有のビューモデルを不要にすることです。これで、生のタスクをPresenterに渡し、オブジェクトを検査し、ビューモデル階層を構築します。 (例えば、EditTextViewModel,ChooseOneViewModelDockingLayoutViewModelなどのような)基本ビューモデル要素からのタスク。

関連する問題