【问题标题】:Should properties of the model be exposed by the view model?模型的属性应该由视图模型公开吗?
【发布时间】:2012-11-07 03:51:00
【问题描述】:

我已经阅读了几篇关于 MVVM 模式的文章和教程,但有一件事我找不到明确的信息。举个例子:

模型包含两个字段和属性:

private string username;
public string Username {
  get; set;
}

private string password;
public string Password {
  get; set;
}

现在,视图模型应该包含什么?它应该只包含模型的一个实例,还是应该“重新公开”模型的属性?

private Model _model;
public Model Model {
  get; set;
}

或者……

private Model _model;
public Model Model {
  get; set;
}

public Username {
  get { return _model.Username; }
  set { _model.Username = value; }
}

我在几篇文章中看到了这两种变体,现在不确定哪种方式是正确的。

【问题讨论】:

    标签: mvvm model viewmodel


    【解决方案1】:

    这个问题没有普遍的正确或错误答案。这取决于上下文和个人喜好。

    我个人倾向于不将模型直接暴露给视图。我喜欢有一个专门为视图量身定制的 ViewModel。我不想仅仅因为视图需要它而在模型中实现任何东西(当模型暴露给视图时,我可能很想这样做)。

    在我的 ViewModel 中,我希望尽可能少地依赖模型。如果我能侥幸成功,我希望有一个完全不依赖于模型的 ViewModel(并且有一些外部实体/服务填充来完成映射)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-07
      • 2012-02-09
      • 1970-01-01
      • 2023-03-30
      • 2013-05-07
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多