恐怕你混了一些東西。 MVVM的基礎知識是
- 模型 - 包含應用程序正在使用的數據。它應該保持儘可能簡單。
- ViewModel - 反映應用程序的狀態幷包含業務邏輯。這是業務層。
- 視圖 - 解釋ViewModel以提供業務層及其狀態的直觀表示。
有了這三個部分,提供問題分離和分離架構非常容易。如果你想閱讀更多,click here。
回到你的問題:
在這種特定情況有兩種模式(數據類)稱爲集團和聯繫。該組包含聯繫人列表。他們都在實現INotifyPropertyChanged接口。
這有點奇怪。通常,您不需要在模型類中實現INotifyPropertyChanged
,因爲VM應該處理視圖中的值更改。
但在模型層中也可以想象得到這種機制。但既然你不想追蹤這層和IMHO的變化,虛擬機應該關心,你不需要它。
[...]具有在ViewModel一個屬性像上面被結合到XAML或createing一個ViewModel每個模型(如GroupViewModel和ContactViewModel)[...]
是,這通常是方法。對於應傳遞給視圖圖層的每個模型類,您將創建ViewModel
。
[...]而不是具有列表的ObservableCollections。
這絕對是一個號碼如果您使用List<T>
,視圖不會意識到集合的更改(添加,刪除)。
什麼是最好的方法(設計明智)? Shoudl我將Model或ViewModel綁定到xaml?
只需粘貼到MVVM。該視圖知道該VM,但VM不知道該視圖。此外,虛擬機知道該模型,但該模型沒有意識到它。這意味着,您應該始終將VM綁定到View。
編輯
以下是完全合法的。
public class Address : ViewModelBase // implements INotifiedPropertyChanged a.s.o.
{
public string Street { /* you know what comes here */ }
public string ZipCode { /* ... */ }
public string City { /* ... */ }
/* more properties */
}
public class Person : ViewModelBase
{
public string Name { /* ... */ }
public Address Address { /* ... */ }
}
來源
2013-06-18 11:12:47
DHN
您應該綁定到視圖模型。 –