C# 中的INotifyPropertyChanged和ObservableCollection<T>

简介:
INotifyPropertyChanged
它的作用:向客户端发出某一属性值已更改的通知。
当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂的代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用的地方太多了:例如上传进度,实时后台数据变更等地方。
它的作用:向客户端发出某一属性值已更改的通知。
当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂的代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用的地方太多了:例如上传进度,实时后台数据变更等地方.目前我发现winform和silverlight都支持,确实是一个强大的接口.
在构造函数中先绑定
public Class_Name()
{
User user =  new  User();
user.Name =  "your name" ;
user.Address =  "your address" ;
 
textBox1.Text = user.Name;
textBox2.Text = user.Address;
}
编写一个简单的业务类
 
public class User : INotifyPropertyChanged
{
public   event  PropertyChangedEventHandler PropertyChanged;
 
private   string  _name;
public   string  Name
{
get  {  return  _name; }
set
{
_name = value;
if (PropertyChanged !=  null )
{
PropertyChanged( this ,  new  PropertyChangedEventArgs( "Name" ));
}
}
}
 
private   string  _address;
public   string  Address
{
get  {  return  _address; }
set
{
_address = value;
if  (PropertyChanged !=  null )
{
PropertyChanged( this ,  new  PropertyChangedEventArgs( "Address" ));
}
}
}
}
 
 
ObservableCollection
绑定到集合
数据绑定的数据源对象可以是一个含有数据的单一对象,也可以是一个对象的集合。之前,一直在讨论如何将目标对象与一个单一对象绑定。Silverlight中的数据绑定还能将目标对象与集合对象相绑定,这也是很常用的。比如显示文章的题目列表、显示一系列图片等。
如果要绑定到一个集合类型的数据源对象,绑定目标可以使用ItemsControl,如ListBox或DataGrid等。另外,通过定制ItemsControl的数据模板(DataTemplate),还可以控制集合对象中每一项的显示。
使用ObservableCollection
数据源集合对象必须继承IEnumerable接口,为了让目标属性与数据源集合的更新(不但包括元素的修改,还包括元素的增加和删除)保持同步,数据源集合还必须实现INotifyPropertyChanged接口和INotifyCollectionChanged接口。
在Silverlight中创建数据源集合可以使用内建的ObservableCollection类,因为ObservableCollection类既实现了INotifyPropertyChanged接口,又实现了INotifyCollectionChanged接口。使用ObservableCollection类不但可以实现Add、Remove、Clear和Insert操作,还可以触发PropertyChanged事件。

 


本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1078699

相关文章
C#学习相关系列之多线程---ConfigureAwait的用法
C#学习相关系列之多线程---ConfigureAwait的用法
914 0
|
存储 缓存 数据库连接
Entity Framework Core 跨数据库查询超厉害!多数据库连接最佳实践,让你的开发更高效!
【8月更文挑战第31天】在现代软件开发中,跨数据库查询是常见需求。Entity Framework Core(EF Core)作为强大的ORM框架,支持多种方法实现这一功能。本文介绍了在EF Core中进行跨数据库查询的最佳实践,包括:理解数据库上下文、使用多个上下文进行查询、处理数据库连接与事务,以及性能优化策略。通过创建独立的数据库上下文如`UserContext`和`OrderContext`,并在业务逻辑中同时使用它们,可以轻松实现跨库查询。此外,利用`TransactionScope`可确保事务一致性,从而提高系统的可靠性和效率。
1440 0
|
设计模式 测试技术 C#
WPF/C#:在WPF中如何实现依赖注入
WPF/C#:在WPF中如何实现依赖注入
933 0
|
C#
WPF技术之Foreground
在WPF中,Foreground属性用于设置元素的前景颜色。与Background属性类似,Foreground属性可以接受多种类型的值,包括颜色、图像、线性渐变和径向渐变等。
1490 0
|
存储 JavaScript 数据库
利用QT进行web与本地混合应用开发-转载
[T] 利用QT进行web与本地混合应用开发  Qt Features for Hybrid Web/Native Application Development。原文参见 http://www.qtsoftware.com/forms/whitepapers/reg-whitepaper-hybrid. (限于本人英文水平,只译其大概)Qt提供了本地 C++对象与JavaScript的无缝集成,是进行本地与web混合应用开发的理想平台。
2533 0
|
3天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
|
云安全 安全 网络安全