List和ObservableCollection的相互转化(用过的必定会知道)

 

在WPF ,SilverLight中常常会用到List<T>和ObservableCollection<T>。这里简单讲一下他们之间的相互转换。html

1.List<T>的简单介绍:数组

List<T>表明的是强类型的Ojbect集合,能够经过索引访问而且提供了查找、排序以及操做此集合的方法。List基本上和ArrayList相同,它用数组的方式实现了接口IList而且他的大小能够根据须要来自动增长。函数

List<T>的缺点post

在使用ASP.NET开发时,咱们简单的使用DataSource和DataBind来绑定数据,可是在SilverLight中就没有那么简单了。在ASP.NET中,绑定操做只是单向的。绑定操做一旦完成若是再想改变值的话,你必须得弹出一个已经赋值须要修改的对话框或者直接在表单上修改,最后再调用方法DataBind,这样的操做特别的麻烦。url

 

2.ObservableCollection的介绍:htm

ObservableCollection是动态数据集合而且当集合中新增、修改或者删除项目时,或者集合被刷新时,都有通知机制(经过实现接口INotifyCollectionChanged)。对象

ObservableCollection的缺点blog

当集合中的属性中改变时没有提供任何的通知机制。在程序运行的过程当中,经过新增、删除或者改变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));

相关文章
相关标签/搜索