ObservableCollection能通知他变化了也正是因为它实现了INotifyPropertyChanged接口,

在wpf项目中经常会遇到把List<T>转换为ObservableCollection<T>.

总结了一下几种方法:

首先有个 Employee实体类:

 public class Employee
{
private string name; public string Name
{
get { return name; }
set { name = value; }
} private int age; public int Age
{
get { return age; }
set { age = value; }
} private string sex; public string Sex
{
get { return sex; }
set { sex = value; }
}

接着有一个返回值为List<Employee>类型的方法:

 /// <summary>
/// 填充一个List<Employee>
/// </summary>
/// <returns></returns>
public List<Employee> GetEmployeeList()
{
List<Employee> list = new List<Employee>
{
new Employee{Name="张三",Age=,Sex="男"},
new Employee{Name="李四",Age=,Sex="男"},
new Employee{Name="小红",Age=,Sex="女"},
};
return list;
}

有一个只读的ObservableCollection<Employee>类型的属性:

private ObservableCollection<Employee> employeeList;

        public ObservableCollection<Employee> EmployeeList
{
get
{
if (employeeList == null)
{
employeeList = new ObservableCollection<Employee>();
}
return employeeList;
}
}

集合类型属性设置为只读的好处这里不展开。

最后是调用GetEmployeeList方法获得一个List<Employee>的list,把这个list赋值给ObservableCollection<Employee>类型的集合属性:

 List<Employee> list = GetEmployeeList();
if (list != null)
{
EmployeeList.Clear();
//方法一如果ObservableCollection集合是可读可写的(set)
//EmployeeList = new ObservableCollection<Employee>(list); //错误:无法对属性或索引器“EmployeeList”赋值 -- 它是只读的
//方法二:遍历list添加到ObservableCollection集合
//foreach (Employee item in list)
//{
// EmployeeList.Add(item);
//}
//方法三:方法二的简写
list.ForEach(p => EmployeeList.Add(p)); //遍历list添加到EmployeeList中
}

List<T>转换为ObservableCollection<T>的更多相关文章

  1. 玩转INotifyPropertyChanged和ObservableCollection

    转载:   http://www.cnblogs.com/Jax/archive/2009/10/13/1582128.html 本文的代码都是基于WPF的,对于Silverlight,这些技术也同样 ...

  2. Silverlight中如何自己写方法将DataTable转换为PagedCollectionView数据(动态创建类)

    将DataTable转换为PagedCollectionView数据,我们可以借用DataTable的GetBindableData()方法,如下: DataTable dt=new DataTabl ...

  3. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

  4. [.NET] 怎样使用 async & await 一步步将同步代码转换为异步编程

    怎样使用 async & await 一步步将同步代码转换为异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6079707.html  ...

  5. 在禅道中实现WORD等OFFICE文档转换为PDF进行在线浏览

    条件: 安装好禅道的服务器 能直接浏览PDF的浏览器(或通过 安装插件实现 ) 文档转换服务程序(建议部署在另一台服务器上)     实现 原理: 修改禅道的文件预览功能(OFFICE文档其使用的是下 ...

  6. Android Studio快捷键switch case 轻松转换为if else

    Android Studio快捷键switch case 轻松转换为if else 今天碰到的问题,没有找到资料,后面找到了方法,这个记下来,转载请注明出处:http://www.cnblogs.co ...

  7. iOS 4s-6Plus屏幕自动适配及颜色转换为十六进制

    iOS各种屏幕自动适配及颜色转换为十六进制 ★★★XLJMatchScreen自动适配屏幕★★★ 支持pod导入 pod 'XLJScreenMatching', '~> 1.0.3' 如果发现 ...

  8. linux2.6 内存管理——逻辑地址转换为线性地址(逻辑地址、线性地址、物理地址、虚拟地址)

    Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同.Linux运行在虚拟存储空间,并负责把系 ...

  9. 微信JS-SDK坐标位置转换为百度地图坐标

    微信JS-SDK开发过程中,使用getLocation获取坐标位置,如何将微信获取的坐标直接应用到百度地图中,显示以下效果: 说明:红色图标是从微信转换过来的位置,蓝色图标是周边位置.首先从微信开发流 ...

随机推荐

  1. Html网页的代码

    Html网页的代码 很全哦 1)贴图:<img src="图片地址"> 2)加入连接:<a href="所要连接的相关地址">写上你想写 ...

  2. CSS3秘笈复习:第六章

    第六章 1.文本大写化: text-transform:uppercase; 另外三种选项是:lowercase或capitalize以及none. 2.文本修饰: text-decoration:u ...

  3. JavaEE 配置文件 应用首选项存储

    JavaEE 配置文件 应用首选项存储 @author ixenos 什么是首选项? 首选项Preferences 指配置信息 首选项存储就是指对配置信息的存储   有什么方式存储? 有两种,一种存于 ...

  4. Objetive-C 中的相等比较

    1.== 用于比较两个对象的地址是否相同 1)需要注意的是相同的短字符串,一定大小整数(nsnumber),Objetive-C 底层会做cache,两个对象,指向同一个地址. 例如: NSStrin ...

  5. hibernate 配置文件

    hibernate.cfg.xml </session-factory> //DAO类 package com.hanqi.dao; import org.hibernate.Sessio ...

  6. SQL多表连接查询以及mysql数据库、sqlserver数据库常见不同点

    mysql数据库表及数据准备语句: USE test; DROP TABLE IF EXISTS `teacher_table`; DROP TABLE IF EXISTS `student_tabl ...

  7. Footer固定在页面底部(CSS)

    <style type="text/css"> #wapper{ position: relative; /*重要!保证footer是相对于wapper位置绝对*/ h ...

  8. NEU OJ 1649 GMZ’s Pretty Number

    先来一次线性素数筛,把1到10000000的素数都筛选出来,然后暴力跑一遍所有可能的值,打个表,查询的时候o(1)效率出解. #include<cstdio> #include<cs ...

  9. mybatis结合redis实战二级缓存(六)

    之前的文章中我们意见分析了一级缓存.二级缓存的相关源码和基本原理,今天我们来分享下了mybatis二级缓存和redis的结合,当然mybatis二级缓存也可以和ehcache.memcache.OSC ...

  10. c语言-猜数字游戏

    #include <stdio.h> #include <stdlib.h> int top(); int input(); void main() { ; int numbe ...