List<T>转换为ObservableCollection<T>
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>的更多相关文章
- 玩转INotifyPropertyChanged和ObservableCollection
转载: http://www.cnblogs.com/Jax/archive/2009/10/13/1582128.html 本文的代码都是基于WPF的,对于Silverlight,这些技术也同样 ...
- Silverlight中如何自己写方法将DataTable转换为PagedCollectionView数据(动态创建类)
将DataTable转换为PagedCollectionView数据,我们可以借用DataTable的GetBindableData()方法,如下: DataTable dt=new DataTabl ...
- XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法
在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...
- [.NET] 怎样使用 async & await 一步步将同步代码转换为异步编程
怎样使用 async & await 一步步将同步代码转换为异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6079707.html ...
- 在禅道中实现WORD等OFFICE文档转换为PDF进行在线浏览
条件: 安装好禅道的服务器 能直接浏览PDF的浏览器(或通过 安装插件实现 ) 文档转换服务程序(建议部署在另一台服务器上) 实现 原理: 修改禅道的文件预览功能(OFFICE文档其使用的是下 ...
- Android Studio快捷键switch case 轻松转换为if else
Android Studio快捷键switch case 轻松转换为if else 今天碰到的问题,没有找到资料,后面找到了方法,这个记下来,转载请注明出处:http://www.cnblogs.co ...
- iOS 4s-6Plus屏幕自动适配及颜色转换为十六进制
iOS各种屏幕自动适配及颜色转换为十六进制 ★★★XLJMatchScreen自动适配屏幕★★★ 支持pod导入 pod 'XLJScreenMatching', '~> 1.0.3' 如果发现 ...
- linux2.6 内存管理——逻辑地址转换为线性地址(逻辑地址、线性地址、物理地址、虚拟地址)
Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同.Linux运行在虚拟存储空间,并负责把系 ...
- 微信JS-SDK坐标位置转换为百度地图坐标
微信JS-SDK开发过程中,使用getLocation获取坐标位置,如何将微信获取的坐标直接应用到百度地图中,显示以下效果: 说明:红色图标是从微信转换过来的位置,蓝色图标是周边位置.首先从微信开发流 ...
随机推荐
- 复习i++和++j
一,新建一个Default.aspx页面 在Default.aspx.cs
- css布局理解
1.盒模型(页面的所有元素都看成一个类似于礼品盒的盒子:包括块级元素和行内元素(也叫内联元素)):http://www.cnblogs.com/cchyao/archive/2010/07/12/17 ...
- XmlNode和XmlElement区别
今天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement.这两个类的功能极其类似(因为我们一般都是在对Element节点进行操作).上网搜罗了半天,千篇一律的答 ...
- CentOS/RedHat rpm方式安装Apache2.2
注:所有RPM包均从网易镜像上下载 # rpm -ivh /home/apache/apr-1.3.9-5.el6_2.x86_64.rpm warning: /home/apache/apr-1.3 ...
- Unity5系列资源管理AssetBundle——更新实现
前面我们研究了AssetBundle的打包与加载,现在我们来了解下如何在项目中根据版本号更新内容. 最最重要的一点,细心的朋友应该看到了在加载AssetBundle的MrcAssetManager类中 ...
- 使用InternetReadFile时要注意读取完整数据
使用这个api读取数据后,即使数据不完整,该函数不会报任何错,GetLastError也显示操作成功.使用时要注意通过其参数判断是否读取完毕 void InternetReadFileEx(HINTE ...
- 洛谷-陶陶摘苹果(升级版)-BOSS战-入门综合练习1
题目描述 Description 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2005普及组第一题不同 ...
- jquery-ui-multiselect 的使用
@model Gd.NetSign.Controllers.DTO.WsaleFundManageDTO @{ ViewBag.Title = "ShowDUYUN"; //Lay ...
- dbg调试
一.启动停止dbg dbg:tracer(). dbg:stop(). 二.跟踪常用函数 1.跟踪进程 dbg:p(PidSpec,TraceFlags). PidSpec Pid 一个特定进程ID ...
- VMware+Windbg双机调试
虚拟机使用XP系统: