List和ObservableCollection的相互转化
在WPF , silverlight ,WP7中經常會用到List<T>和ObservableCollection<T>。這里簡單講一下他們之間的相互轉換。
1.List<T>的簡單介紹:
List<T>代表的是強類型的Ojbect集合,可以通過索引訪問并且提供了查找、排序以及操作此集合的方法。List基本上和ArrayList相同,它用數組的方式實現了接口IList并且他的大小可以根據需要來自動增加。
List<T>的缺點
在使用ASP.NET開發時,我們簡單的使用DataSource和DataBind來綁定數據,但是在SilverLight中就沒有那么簡單了。在ASP.NET中,綁定操作只是單向的。綁定操作一旦完成如果再想改變值的話,你必須得彈出一個已經賦值需要修改的對話框或者直接在表單上修改,最后再調用方法DataBind,這樣的操作特別的麻煩。
?
2.ObservableCollection的介紹:
ObservableCollection是動態數據集合并且當集合中新增、修改或者刪除項目時,或者集合被刷新時,都有通知機制(通過實現接口INotifyCollectionChanged)。
ObservableCollection的缺點
當集合中的屬性中改變時沒有提供任何的通知機制。在程序運行的過程中,通過新增、刪除或者改變ObservableCollection集合中的數據時,只有新增和刪除數據時,UI集合(DataGrid)中的數據才改變。但是在修改集合中已經存在的數據時UI層的數據卻不能改變。
?
3.這里不得不提一下子INotifyPropertyChanged,它不是集合,只是一個接口。在類中提供一個事件PropertyChanged,當屬性的值發生改變時通知客戶端。如果對象的狀態發生改變時(新增、修改、刪除)將觸發事件PropertyChange指向那些已經發生改變的集合。?????????????????
ObservableCollection能通知他變化了也正是因為它實現了INotifyPropertyChanged接口。只是微軟給出了具體的實現,如果要寫List需要自己實現 INotifyPropertyChanged接口,
說了這么多,言歸正傳,對于它們互換:
T tList = new List(tObjectStruct .ToList());??
ObservableCollection tObjectStruct? = new ObservableCollection(tList);??
都在構造函數中即可完成
也可以:
tList.ForEach(p => tObjectStruct.Add(t));
轉載于:https://www.cnblogs.com/zjoch/archive/2011/12/08/2281075.html
總結
以上是生活随笔為你收集整理的List和ObservableCollection的相互转化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 门套多少钱啊?
- 下一篇: 话从口出下一句是什么啊?