2012-11-19 105 views
0

我已经阅读了关于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; } 
} 

我已经看到了几篇文章都变种,现在我不能确定哪条路是正确的。

回答

1

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

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

在我的ViewModel中,我喜欢尽可能少地依赖模型。如果我可以避开它,我喜欢有一个ViewModel,它并不直接依赖型号的(并且有一些外部实体/服务填充进行映射)。