【发布时间】:2013-01-30 20:23:39
【问题描述】:
使用 Visual Studio 2012,我添加了对远程 Web 服务的服务引用。它被配置为使用异步调用。该应用程序使用带有 MVVM 模式的 WPF。
一个模型类称为Projects,它公开了一个属性ProjectList,可以在视图模型中使用。 ProjectList 应包含从服务中检索到的项目列表。
到目前为止,我像这样从视图模型中调用此服务(实际上它是由命令调用的):
Projects.ProjectList = proxy.getProjectList(username, password);
是的,它有效,但据我所知,“业务逻辑”不应该由视图模型处理。那么当视图在视图模型中触发命令时,我将如何以及在何处调用服务并设置模型的 ProjectList 属性?
【问题讨论】:
-
我通常把它放到一个它自己的类中,用来处理数据事务,然后使用 ViewModel 中的那个类。这样,如果我的数据层发生变化,我只需要修改一个层,而不是在我的所有 ViewModel 中搜索需要更新的数据访问代码。
-
@Rachel:是的,这也是我的理解,但是数据层——或者任何可能称之为的——会直接修改模型属性吗?还是视图模型会设置它?
-
数据层返回的是模型对象,而不是模型的数据。所以
IProductsRepository.GetProducts()会返回一个List<Product>:)