属性更改通知(INotifyPropertyChanged)——针对ObservableCollection

本文探讨了在WPF开发中如何利用ObservableCollection和INotifyPropertyChanged接口实现数据改变时视图的自动更新。文章提供了两种实现方案,一种是通过自定义类实现INotifyPropertyChanged接口,另一种是使用mvvmlight框架提供的ViewModelBase类。

问题

在开发webform中,wpf中的ObservableCollection<T>,MSDN中说,在添加项,移除项时此集合通知控件,我们知道对一个集合的操作是CURD
但是恰恰没有Update的时候提供集合通知,也就是说当我Update的时候,虽然"集合内容“已被修改,但是"控件“却没有实现同步更新
INotifyPropertyChanged提供了解决方案。

方案1:INotifyPropertyChanged

传统方式,实现接口INotifyPropertyChanged

public class StudentByINotifyPropertyChanged: INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged; //实现INotifyPropertyChanged接口 private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } private string sex; private string name; public string Sex { get { return sex; } set { sex = value; NotifyPropertyChanged("Sex"); } } public string Name { get { return name; } set { name = value; NotifyPropertyChanged("Name"); } } } 
示例代码

https://github.com/zLulus/NotePractice/tree/dev3/WPF/WpfDemo/PropertyChanged

方案2:采用框架实现好的

mvvmlight的ViewModelBase已实现该方法,使用如下

 

 

List与ObservableCollection对比

List可检查更改,不能检查增加、删除
ObservableCollection检查增加、删除,不能检查更改

转载于:https://www.cnblogs.com/Lulus/p/8158367.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值