2009-09-08 39 views
2

我在問自己如何在以下場景中正確應用MVVM: 假設我有簡單的主從數據,就像擁有0-n個地址的人一樣。 地址應顯示在列表框中,用戶應該能夠觸發每個地址的證書操作。如何在此場景中應用MVVM

所以我做的是創建一個虛擬機,返回人模型和地址模型。 接下來的問題是,我想在地址DataTemplate中創建按鈕。但爲了使按鈕正常工作,我需要一個由每個地址公開的命令,這些命令可以綁定到按鈕上的相應屬性。

我的問題是,如果它真的是正確的方法來包裝(在這種情況下)在另一個對象的每個地址暴露必要的功能?我想避免我必須維護第二個地址視圖模型列表,具體取決於第一個列表與模型對象的變化。

TIA 馬丁

回答

2

這聽起來像是正確的做法。

將UI直接綁定到Domain Model類總是非常誘人,但經驗表明,您總是可以在UI和域模型之間滑動ViewModel。這可以確保特定於UI的成員(例如您提到的ICommand屬性)保留在UI中並且不會侵入域模型。

在某些情況下,似乎域模型幾乎適合,或者甚至完全適合預期的UI。在這些情況下,抵制將域模型直接綁定到視圖的衝動是非常困難的。

但是,很有可能視圖特定的需求可能會在稍後出現,然後您將面臨不得不在當時引入視圖模型的問題 - 而且這通常是您沒有真正擁有視圖模型的時候時間做到這一點。

如果您可以簡單地說:「所有域對象都封裝在ViewModel中,然後綁定到視圖,它還使您的應用程序體系結構更易於理解。」

+0

+1。起初,直接綁定到模型似乎更容易,但最終你幾乎總是最終需要模型不能提供的東西(通常是命令) – 2009-09-09 00:07:35