2010-11-24 73 views
0

我有一個名爲MemberRepository的存儲庫,它由MemberListViewModel和MemberEditViewModel使用。在存儲庫中,我有我的GetMember(),CreateMember,SaveMember,Rollback()和DeleteMember()。有關存儲庫模式和MVVM的問題

在整個我的應用程序中,我有許多查找表填充組合框。示例狀態,交易代碼,代理,用戶等等我在哪裏放置GetUsers,GetStatuses(),GetTradeCodes()方法?在適當的倉庫中使用它們?

例如,成員視圖模型需要一個狀態,交易代碼,類等等的列表。所以我會把這些獲取在MemberRepository中?

比爾

回答

0

好了,你MemberListViewModel是的列表頁面,您MemberEditViewModel是一個編輯頁面。

我會做什麼,在我的模型,是揭露以下類:

  • ListMembersTask
  • EditMemberTask

你所有的倉庫每一個需要注入這些,他們公開一些執行每個任務的抽象事物所需的屬性和方法。例如,ListMembersTask可能有一個名爲CreateMember()的方法,該方法返回用空成員對象初始化的新的EditMemberTask

您的ViewModel然後被注入適當的任務(所以MemberListViewModel獲得注入ListMembersTask等)。您的MemberListViewModel將有一個RelayCommand,稱爲CreateMember()並將返回的EditMemberTask注入到MemberEditViewModel中,並將新MemberEditViewModel傳遞給演示者。

如果您遵循該方法,則存儲庫僅負責持久性。任務在會話期間包裝業務邏輯的狀態,而視圖模型只是使任務可綁定。

我一直在努力的下一步是免除任務特定的視圖模型,並且現在我將一個原始任務交給演示者,然後它檢查該對象並構建一個視圖模型層次結構基本視圖模型元素的任務(如EditTextViewModel,ChooseOneViewModel,DockingLayoutViewModel等)。