C# 中的INotifyPropertyChanged和ObservableCollection<T>
来源:互联网 发布:js字符串转数组 编辑:程序博客网 时间:2024/04/29 14:19
Winter is coming
Just have a little faith.
C# 中的INotifyPropertyChanged和ObservableCollection<T>
INotifyPropertyChanged
它的作用:向客户端发出某一属性值已更改的通知。
当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂的代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用的地方太多了:例如上传进度,实时后台数据变更等地方。
它的作用:向客户端发出某一属性值已更改的通知。
当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂的代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用的地方太多了:例如上传进度,实时后台数据变更等地方.目前我发现winform和silverlight都支持,确实是一个强大的接口.
在构造函数中先绑定
{
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事件。
0 0
- C# 中的INotifyPropertyChanged和ObservableCollection<T>
- C# 中的INotifyPropertyChanged和ObservableCollection<T>
- List<T>、ObservableCollection<T>和接口INotifyPropertyChanged
- 玩转INotifyPropertyChanged和ObservableCollection
- 玩转INotifyPropertyChanged和ObservableCollection
- 玩转INotifyPropertyChanged和ObservableCollection
- 玩转INotifyPropertyChanged和ObservableCollection
- 简析SilverLight的List<T>、ObservableCollection<T>和INotifyPropertyChanged的异同
- (转载)玩转INotifyPropertyChanged和ObservableCollection
- ObservableCollection和List与INotifyPropertyChanged的使用
- 简析SilverLight的List、ObservableCollection和INotifyPropertyChanged的异同
- 简析SilverLight的List、ObservableCollection和INotifyPropertyChanged的异同
- c# List<T>与ObservableCollection<T>
- c# List<T>与ObservableCollection<T>
- c# List<T>与ObservableCollection<T>
- ObservableCollection<T>在window phone7中的应用
- 一步一步教你MVVM同时玩转INotifyPropertyChanged和ObservableCollection(转)
- List<T>和ObservableCollection<T>的相互转化
- Android退出Activity
- 【Hadoop】HDFS的运行原理
- 分享8年开发经验,浅谈个人发展经历,明确自己发展方向
- boost spirit 解析字符串 (一)
- Android 圆形、圆角图片ImageView
- C# 中的INotifyPropertyChanged和ObservableCollection<T>
- 解决CGI输出中文乱码
- c++ 重载== 相关
- UpdateParameterUtils
- ipython 报错:pkg_resources.DistributionNotFound: importlib
- Android Paint和Color类
- phonegap 学习笔记-安装phonegap
- 递归调用
- 404、500、502等HTTP状态码介绍