2010-11-24 44 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等)。