List<T>和ObservableCollection<T>的相互转化
来源:互联网 发布:显卡驱动负优化 编辑:程序博客网 时间:2024/05/16 11:32
http://blog.csdn.net/huangliangjie/article/details/6677315
在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));
- List<T>和ObservableCollection<T>的相互转化
- List<T>和ObservableCollection<T>的相互转化
- List和ObservableCollection的相互转化
- List和ObservableCollection的相互转化
- List和ObservableCollection的相互转化
- List和ObservableCollection的相互转化
- List<T>、ObservableCollection<T>和接口INotifyPropertyChanged
- 简析SilverLight的List<T>、ObservableCollection<T>和INotifyPropertyChanged的异同
- wpf list<T>与ObservableCollection<T>的区别
- wpf list<T>与ObservableCollection<T>的区别
- wpf list<T>与ObservableCollection<T>的区别
- c# List<T>与ObservableCollection<T>
- c# List<T>与ObservableCollection<T>
- c# List<T>与ObservableCollection<T>
- C# 中的INotifyPropertyChanged和ObservableCollection<T>
- C# 中的INotifyPropertyChanged和ObservableCollection<T>
- List<T>和Ilist<T>的区别
- ObservableCollection<T> 成员
- 联迅文库系统文库介绍
- ObservableCollection 类
- linux下python调用Mysql
- MyEclipse的优化,加快打开和编辑的速度
- CLR via C# 读书笔记1-3
- List<T>和ObservableCollection<T>的相互转化
- Hibernate第一个程序
- c++ 学习笔记:c++编程基础
- C#学习记录---ExecuteNonQuery()返回值问题
- 一个天使投资人眼中的创业成功法则
- 个人参与的网站 求测试。帮忙看看有没什么大问题。高并发等
- getevent & sendevent 的分析应用
- 素数筛
- 编程新感觉