关于C#中 INotifyPropertyChanged 的学习

本文介绍了C# WPF中INotifyPropertyChanged接口的使用,通过一个实例展示了如何实现控件属性与后台变量的双向绑定,使得UI界面与数据模型实时同步更新。在示例中,创建了Customer类并定义了四个属性,然后在用户控件中绑定这些属性,通过按钮事件改变变量值,验证了数据绑定的效果。
摘要由CSDN通过智能技术生成

关于C#中 INotifyPropertyChanged 的学习

**1、**第一次看到别人在C#-WPF程序中用INotifyPropertyChanged,感觉有点高端,但又不明白这个类到底有什么实际意义直到后来在学习 绑定时,在搜索中才发现 INotifyPropertyChanged 可以将 控件的某个属性与某个变量进行绑定(属性与变量需为同一类型)
例如:自定义string 类型变量 str , 同时From中有一文本框控件 textBox1,故可以将 str 与 textBox1的Text属性进行绑定,以达到当 textBox1的Text属性值变化时,str的值也会自动随之变化,当str的值变化时, textBox1的Text属性值也会随之变化(同时表现在UI上)。

2、 下面用一个小例子来演示:

①、首先自定义类 Customer
在这里插入图片描述
②、Customer 里包含4个私有变量 x、y、z、r(小写),然后定义4个public变量 X、Y、Z、R(大写)
在这里插入图片描述
在这里插入图片描述
③ 创建用户控件 (该用户控件包含4个textBox)(创建用户控件不是本章重点,故在此简写,在下章再做重点介绍)
在这里插入图片描述
上图为用户控件里的代码,在set 一项中有同学可能会疑问,为何要加this.Invoke((EventHandler)delegate 这一委托,笔者在一开始时也未加委托,结果在主UI中textBox的值变化时,报“线程间调用控件”的错误,故怀疑INotifyPropertyChanged在让textBox的值随string类型变量的值变化时,开启了其他线程

④、接着实例化 Customer 类,并在 Form_Load 中进行绑定,代码如下
在这里插入图片描述
⑤、接着再说UI部分 ,将我们编写好的用户控件拖到主界面上,然后随意拖动几个button在主页面上,这几个button的作用就是在其单击事件里改变变量的值,然后观察textBox的Text值是否随之改变
这是笔者自己随意写的测试内容,大家可以根据自己的想法自行测试,无非两点:1、改变string类型变量的值,观察与之绑定的控件的Text的值是否改变;2、改变TextBox的Text的值,观察与之绑定的string类型变量的值是否改变
在这里插入图片描述

⑥、运行程序,开始测试
单击button1,在代码中button1的作用为:给变量赋值,可以看到在变量赋值的同时,用户控件与之相对应的4个textBox的Text值与随之发生了变化
然后单击 button2,此时我们将用户控件对应的X的textBox的Text的值改变了,接下来我们要观察与之绑定的变量是否发生了变化,
点击button3 即可。
在这里插入图片描述
3、最后对数据绑定的关键方法做一简单解释
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值