如何在 MVVM 中使用视图模型



我正在开发Windows Phone 7应用程序,听说MVVM模式很有用。我在这个网站上阅读了许多文章和问题,但我得到的只是视图模型作为视图和模型之间的桥梁的解释。如果模型是 Customer 类,则视图模型被视为用于数据绑定的客户集合。这是一个非常简单的用法!

如果我想从网络加载客户,在视图上显示它,然后将其存储到本地数据库,我应该将所有逻辑代码放在视图模型中吗?

不,你不应该,阅读关注点分离。你只希望每个类更改一个原因,视图模型应该只负责翻译要在视图上显示的模型信息。

单独的服务实现应负责从数据存储中获取模型实例。

例如:

public class MyViewModel
{
    private readonly ICustomerRetrieval _retrievalService;
    public MyViewModel(ICustomerRetrieval retrievalService)
    {
        _retrievalService = retrievalService;
    }
    public IEnumerable<CustomerViewModel> Customers
    {
        get { return _retrievalService.GetAllCustomers().Select(AsViewModel);
    }
    private CustomerViewModel AsViewModel(CustomerModel cust)
    {
        return new CustomerViewModel(cust);
    }
}

您可以看到服务负责查找客户模型,而视图模型仅负责将这些模型转换为可从 UI 使用的内容。

如果我想从网络加载客户,请在视图上显示它,然后 将其存储到本地数据库,我是否应该将所有逻辑代码放在 查看模型 ?

如果"从网络加载客户"的逻辑特定于视图,并且仅特定于该视图,则将其放入该视图模型中是有意义的。

如果需要与其他视图共享客户的加载,那么也许您应该将其放置在启动时或后台加载的数据层中。

视图

模型应仅包含特定于该视图的代码。它不应包含任何"核心"功能,例如加载数据(如果应用程序在其他地方需要该数据)。

相关内容

  • 没有找到相关文章

最新更新