我想了解MVVM模式,並且拿了一個示例程序來處理。該模型是一個C#.net庫,在查詢時會返回一個IList<INote>
對象。我希望我的視圖能夠通過數據綁定添加/編輯/刪除此集合中的項目。但我不知道如何從MVVM開始。請幫助我。將IList綁定到使用MVVM的列表控件
模型公開檢索IList<INote>
objecs接口, 查看具有顯示將數據添加到IList<INote>
的IList<INote>
內容和其他幾個控件的列表框。
我想了解MVVM模式,並且拿了一個示例程序來處理。該模型是一個C#.net庫,在查詢時會返回一個IList<INote>
對象。我希望我的視圖能夠通過數據綁定添加/編輯/刪除此集合中的項目。但我不知道如何從MVVM開始。請幫助我。將IList綁定到使用MVVM的列表控件
模型公開檢索IList<INote>
objecs接口, 查看具有顯示將數據添加到IList<INote>
的IList<INote>
內容和其他幾個控件的列表框。
將您的列表框綁定到ObservableCollection<T>
,它會立即更新,每當您添加或刪除的東西從ObservableCollection<T>
。
這個ObservableCollection<T>
通常應該是你的ViewModel的屬性。
如果您的模型中的IList
屬性不可觀察(並且您無法控制它),則必須編寫代碼以在ViewModel中同步它。這些都是當時的建築問題。我覺得在這方面最乾淨的選擇是實際使用ReadOnlyObservableCollection<T>
,並使用您的存儲庫添加/刪除項目並進行相應的同步。
我的blog post對DelegateCommand
應該給你一個很好的接地。
我綁定我的列表框到ObservableCollection<Item>
和我添加/刪除/修改項目進出這個集合。它工作正常。請在how it works without any INotifyPropertyChanged上查看。請糾正我,如果我錯了
有沒有辦法自動執行此同步?就像我們將ObservableCollection綁定到控件一樣,有沒有辦法將我的庫中的IList綁定到我的ViewModel中的ObservableCollection? –
sudarsanyes
2010-01-13 18:41:04
似乎你不能像普通的日子那樣將一個正常的集合包裝到一個ObservableCollection中。 ;-) 蠻力方法不會很複雜,只需清除列表並再次從模型中讀取即可。 更優雅的方法將是一個自定義可觀察集合類,它利用了一些類似HashSet的算法。 – herzmeister 2010-01-13 19:04:27