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

被折叠的 条评论
为什么被折叠?



