2012-12-13 42 views
1

My ViewModel有一個模型的集合。我在這方面有幾個問題。INotifyPropertyChanged與Model和ViewModel

1 - 如果我只在ViewModel中實現了INotifyPropertyChanged接口,當模型的屬性在視圖中被修改時,如何通知模型?我應該在model和ViewModel中實現接口嗎?

2 - 如果我想在ViewModel中使用LINQ,我必須創建與List<T>模型的集合,不可能是ObservableCollection,是嗎?

3 - 我應該在哪裏操作數據庫?在ViewModel或其他地方?例如,我在視圖中添加一個實例,我想將它添加到數據庫,我應該在哪裏執行LINQ命令來插入它?

謝謝。

+0

你可以一一列出問題 – Tilak

回答

3
  1. 您在查看修改模型的情況下,會自動由於數據綁定更新。(希望我理解你問正確的)

  2. 的LINQ可以的情況下被執行實現IEnumerable,IQueryable的類型。您可以在ObservableCollection上使用Linq

  3. 您應該有一個處理CRUD操作的業務層,並根據需要從ViewModel調用它。

+0

嗨@dutzu,謝謝你的回覆!第一個問題,如果viewmodel只包含模型的集合。我需要實現INotifyPropertyChanged接口嗎? ObservableCollection已經實現了這個接口。如果集合是List ,我實現了接口,當列表發生變化時,它會通知視圖模型,但是如果只更改了模型的屬性,列表不會更改,它是否會通知viewmodel? – James

+0

如果在視圖模型中有列表,則notify事件將觸發的唯一事情是實例本身是否已更改。但是如果你想要通知集合內部的東西已經改變了,所以請使用ObservableCollection。第二件事,如果你需要通知視圖集合中模型實例的屬性已經改變 - 模型必須實現INotifyPropertyChanged才能工作。 – dutzu