INotifyPropertyChanged的优雅使用

在利用WPF进行开发中,很多开发人员肯定会遇到这样的一个接口,INotifyPropertyChanged,它提供了一种后台数据的改变影响前台显示的,这个往往在我们开发的过程中很重要的一个功能,例如开发音乐播放器,聊天软件,等一些小的软件也用到,很多情况需要把后台的数据更改情况反映给前台从而进行响应反映给用户,下面看一下没有实现INotifyPropertyChanged接口的时候,是多么的糟糕:
WPF自学笔记之--INotifyPropertyChanged的优雅使用 WPF自学笔记之--INotifyPropertyChanged的优雅使用
Xaml:
WPF自学笔记之--INotifyPropertyChanged的优雅使用
这是一个很简单的例子,无论我们怎么按那个按钮,都不会在TextBox中得到任何的反映,但是我们断点一下发现,后台每次按那个按钮都会把n.NB的值+1,只是前台不反映而已,前台TextBox是绑定了那个NB属性的!!这个时候INotifyPropertyChanged接口就派上用场了,下面看一下对Number类型的修改:
WPF自学笔记之--INotifyPropertyChanged的优雅使用
好了,对这个Number类进行一系列的修改以后,它支持数据改变从而驱动界面的改变了,看一下效果
WPF自学笔记之--INotifyPropertyChanged的优雅使用 WPF自学笔记之--INotifyPropertyChanged的优雅使用
没按一次加一按钮都会做出相应的反应!!!很好,这就是INotifyPropertyChanged的使用方法了,但是问题来了哦,如果在一个软件中有很多个类都需要实现这个功能,那么就要每一个类都先实现 INotifyPropertyChanged接口,然后编写事件,然后等等等等,还有,如果一个类中需要有很多属性有这个功能,那么也需要重复很多次同样的代码,需要怎么办呢?,优雅之处是给优雅之人用的,很多初学者都是很鲁莽的,不会介意有多少重复代码,实现功能就行了,好了,下面看一下优雅之人的优雅之处:
利用C#中的继承,把重复的代码抽到积累中去,然后每次创建需要这个功能的类的时候就能声明为这个基类的子类就方便很多了~~下面看一下实现:
WPF自学笔记之--INotifyPropertyChanged的优雅使用
我把修改过的类都剪切上来了,其他的不便,好了看一下这个PropertyChangedBase基类,它把都系都包装起来了,用的时候就直接继承这个类,然后使用这个OnPropertyChanged方法就能实现这个功能了!!!但是可能你会觉得,这不是强类型,不安全啊,如果在传入参数的时候打错了,例如"NB"打成"MB",好了,编译器也不会出现错误的,这个时候就难找了,找到天昏地暗,都不知道找到哪里有错,好,下面运用强类型来修改一下这个基类,我们不断地往优雅和安全的方向走!~~~哈哈,下面看一下基类的修改还有客户端代码的改变,这里用到了泛型,树表达式的知识:
WPF自学笔记之--INotifyPropertyChanged的优雅使用
这样也能够使用了!!!但是看一下客户代码,好繁琐啊,OnPropertyChanged<int>(()=>this.NB),我们还是需要写int等参数传进去,如果能这样写那该多好,多帅,多霸气:OnPropertyChanged(p=>p.NB);~~~~!!!下面我们走向最最最帅的一步,哈哈~!这个要用到C#里面的方法扩展了!~
WPF自学笔记之--INotifyPropertyChanged的优雅使用
好了,完成!!!!代码研究一下就好
引自:http://blog.sina.com.cn/s/blog_7b60d05f0101rr0d.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值