2010-01-13 44 views
1

我想了解MVVM模式,並且拿了一個示例程序來處理。該模型是一個C#.net庫,在查詢時會返回一個IList<INote>對象。我希望我的視圖能夠通過數據綁定添加/編輯/刪除此集合中的項目。但我不知道如何從MVVM開始。請幫助我。將IList綁定到使用MVVM的列表控件

模型公開檢索IList<INote> objecs接口, 查看具有顯示將數據添加到IList<INote>IList<INote>內容和其他幾個控件的列表框。

回答

3

將您的列表框綁定到ObservableCollection<T>,它會立即更新,每當您添加或刪除的東西從ObservableCollection<T>

這個ObservableCollection<T>通常應該是你的ViewModel的屬性。

如果您的模型中的IList屬性不可觀察(並且您無法控制它),則必須編寫代碼以在ViewModel中同步它。這些都是當時的建築問題。我覺得在這方面最乾淨的選擇是實際使用ReadOnlyObservableCollection<T>,並使用您的存儲庫添加/刪除項目並進行相應的同步。

+0

有沒有辦法自動執行此同步?就像我們將ObservableCollection綁定到控件一樣,有沒有辦法將我的庫中的IList綁定到我的ViewModel中的ObservableCollection ? – sudarsanyes 2010-01-13 18:41:04

+0

似乎你不能像普通的日子那樣將一個正常的集合包裝到一個ObservableCollection中。 ;-) 蠻力方法不會很複雜,只需清除列表並再次從模型中讀取即可。 更優雅的方法將是一個自定義可觀察集合類,它利用了一些類似HashSet的算法。 – herzmeister 2010-01-13 19:04:27

1

我的blog postDelegateCommand應該給你一個很好的接地。