2012-11-19 149 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,它並不直接依賴型號的(並且有一些外部實體/服務填充進行映射)。