打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
WPF自学笔记之
 在利用WPF进行开发中,很多开发人员肯定会遇到这样的一个接口,INotifyPropertyChanged,它提供了一种后台数据的改变影响前台显示的,这个往往在我们开发的过程中很重要的一个功能,例如开发音乐播放器,聊天软件,等一些小的软件也用到,很多情况需要把后台的数据更改情况反映给前台从而进行响应反映给用户,下面看一下没有实现INotifyPropertyChanged接口的时候,是多么的糟糕:

Xaml:

这是一个很简单的例子,无论我们怎么按那个按钮,都不会在TextBox中得到任何的反映,但是我们断点一下发现,后台每次按那个按钮都会把n.NB的值+1,只是前台不反映而已,前台TextBox是绑定了那个NB属性的!!这个时候INotifyPropertyChanged接口就派上用场了,下面看一下对Number类型的修改:

好了,对这个Number类进行一系列的修改以后,它支持数据改变从而驱动界面的改变了,看一下效果
没按一次加一按钮都会做出相应的反应!!!很好,这就是INotifyPropertyChanged的使用方法了,但是问题来了哦,如果在一个软件中有很多个类都需要实现这个功能,那么就要每一个类都先实现 INotifyPropertyChanged接口,然后编写事件,然后等等等等,还有,如果一个类中需要有很多属性有这个功能,那么也需要重复很多次同样的代码,需要怎么办呢?,优雅之处是给优雅之人用的,很多初学者都是很鲁莽的,不会介意有多少重复代码,实现功能就行了,好了,下面看一下优雅之人的优雅之处:
利用C#中的继承,把重复的代码抽到积累中去,然后每次创建需要这个功能的类的时候就能声明为这个基类的子类就方便很多了~~下面看一下实现:

我把修改过的类都剪切上来了,其他的不便,好了看一下这个PropertyChangedBase基类,它把都系都包装起来了,用的时候就直接继承这个类,然后使用这个OnPropertyChanged方法就能实现这个功能了!!!但是可能你会觉得,这不是强类型,不安全啊,如果在传入参数的时候打错了,例如"NB"打成"MB",好了,编译器也不会出现错误的,这个时候就难找了,找到天昏地暗,都不知道找到哪里有错,好,下面运用强类型来修改一下这个基类,我们不断地往优雅和安全的方向走!~~~哈哈,下面看一下基类的修改还有客户端代码的改变,这里用到了泛型,树表达式的知识:
这样也能够使用了!!!但是看一下客户代码,好繁琐啊,OnPropertyChanged<int>(()=>this.NB),我们还是需要写int等参数传进去,如果能这样写那该多好,多帅,多霸气:OnPropertyChanged(p=>p.NB);~~~~!!!下面我们走向最最最帅的一步,哈哈~!这个要用到C#里面的方法扩展了!~

好了,完成!!!!代码研究一下就好
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
wpf list<T>与ObservableCollection<T>的区别
WPF绑定,后台数据已更新,但前台数据未刷新
当您在 Windows 演示基础使用数据绑定时,可能会发生内存泄漏
WPF3D重要类之间的关系
闲话WPF之十五(WPF的数据处理 [2])
[C++]命名空间不同的两个类,如何在头文件中做声明
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服