相关文章推荐
成熟的饭盒  ·  WPF的MVVM框架Stylet开发文档 ...·  2 周前    · 
酒量大的蛋挞  ·  关于WPF的ViewModel中TextBo ...·  2 周前    · 
英俊的大熊猫  ·  【WPF】MVVM动态修改Bingding的 ...·  2 周前    · 
温暖的火腿肠  ·  .NET Framework 的新功能 - ...·  1 周前    · 
性感的炒饭  ·  南方日报:《新华字典》APP别一心向着“孔方 ...·  1 年前    · 
豪情万千的眼镜  ·  新疆维吾尔自治区生态环境厅环境影响评价与排放 ...·  1 年前    · 
可爱的小蝌蚪  ·  俄乌冲突对欧洲的经济影响进入新阶段·  1 年前    · 
性感的镜子  ·  《寻龙传说》藏有哪些东南亚元素?丨揭秘_信任·  2 年前    · 
愤怒的显示器  ·  元芳来了漫画免费 - 元芳来了漫画 - ...·  2 年前    · 
Code  ›  WPF自学入门(七)WPF 初识Binding开发者社区
云数据 wpf
https://cloud.tencent.com/developer/article/1504762
强健的皮带
2 年前
作者头像
黄昏前黎明后
0 篇文章

WPF自学入门(七)WPF 初识Binding

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 小黎子数据分析 > WPF自学入门(七)WPF 初识Binding

WPF自学入门(七)WPF 初识Binding

作者头像
黄昏前黎明后
发布 于 2019-09-11 17:38:40
904 0
发布 于 2019-09-11 17:38:40
举报

今天记录一下Binding的基础和具体的使用方法,说起这个Binding,在WPF中,Binding是很重要的特征,在传统的Windows软件来看,大多数都是UI驱动程序的模式,也可以说事件驱动程序,这个程序模式在工作过几年的程序员中是根深蒂固的,WPF作为Winform的升级,它把UI驱动程序彻底改变了,核心回到了数据驱动程序的模式上面,这样,程序就回到了算法和数据。数据,才是真正需要重点处理的!

Binding在数据驱动程序模式中起着至关重要的作用,它最为重要的一个特点就是通讯,连接着前台与后台。首先看一下Binding最简单的使用方法:

一、元素之间的绑定

这里有3个控件,Slider,TextBox,Label,其中TextBox和Label都作为目标,Slider都作为数据源,把Slider中的值交由两个控件体现,移动滑块,TextBox会自动显示Value的值,也就是FontSize的值。因为两个绑定都设置了双向绑定,所以可以在文本框中输入值,然后丢失焦点,也能反馈回去。

看一下XAML中的绑定语句,这里用的ElementName就是制定要绑定的对象的名字,Path就是要绑定的依赖项属性,mode就是绑定方式,这里需要说明的是mode有五种方式:

(1)OneWay 单向绑定

(2)TwoWay 双向绑定

(3)OneTime,最初根据源属性值设置目标属性,以后就忽略所有改变,就是说,只进行初始化。

(4)OneWayToSource,这和OneWay相反

(5)Default,这是默认形式,它根据目标属性自动设置。

如果把TextBox中的值修改成其他的,滑条位置没有改变,字体大小也没有改变,这是什么回事呢?当TextBox失去焦点的时候,就会发生相应的改变了。这是因为这个绑定中的默认更新机制,更新机制Binding.UpdateSourceTrigger,这个属性有4个枚举值

(1)PropertyChange,当值改变的时候,就更新。

(2)LostFocus,当时去焦点的时候更新.

(3)Explicit,当调用BingingExpression.UpdateSource()方法的使用更新,其他情况不会更新。

(4)Default,默认形式

注意:以上这四种更新机制的设定,只会影响源数据,而不会影响目标数据。

二:元素自身的绑定

除了可以绑定别的元素,也可以绑定自身的其他属性,例如Slider自身的Opacity属性和自身的Value属性绑定,当滑块向左移动的时候,会逐渐隐藏起来。

三:后台数据与元素之间的绑定

前面说了元素之间的绑定和元素自身的绑定,最后重点来了后台数据和前台元素的绑定,这种绑定方式很好地体现了数据驱动程序的运行模式。

首先新建Person类

页面后台代码

显示效果:

数据的绑定的方式已经写完了。Binding是一条高速公路,那么为了提高数据传递的合法性和有效性,我们要在这条高速公路中建立起一系列的关卡,有的用来转换数据,有的用来校验数据,下面就说一下Binding对数据的校验和转换。

(一)Binding的数据校验

Binding的数据校验工作是派生自ValidationRule类,并且对Validate方法进行重写的自定义类!看一下实例:

先设计一个检验类,它继承ValidationRule类并且重写Validate方法。使用这个类的时候是创建Binding的时候设置校验的。

代码如下:

好了,看一下结果

因为设置了值传过去的值不能是超过0~100之间,所以当超过了就显示红色边框。在Binding中,默认是会认为数据源是肯定正确的,所以如果将TextBox作为数据源,而Slider作为目标,数据源输入错误是没有显示的,那么怎么解决这个问题呢,设置VdataValidationRule.ValidatesOnTargetUpdated = true;

( 二)Binding的数据转换

Binding还有另外一种机制称为数据转换,当Source端指定的Path属性值和Target端指定的目标属性不一致的时候,我们可以添加数据转换器(Convert)。上面我们提到的问题实际上就是double和stirng类型相互转换的问题,因为处理起来比较简单,所以WPF类库就自己帮我们做了,但有些数据类型转换就不是WPF能帮我们做的了,当遇到这些情况,我们只能自己动手写Converter,方法是创建一个类并让这个类实现IValueConverter接口。

这个就是日期转换类,它有两个方法:

1.当值从绑定源传播给绑定目标时,调用方法Convert

2.当值从绑定目标传播给绑定源时,调用此方法ConvertBack,方法ConvertBack的实现必须是方法Convert的反向实现。

这两个方法分别在里面写入怎么转换,转换成什么类型就是返回类型。

下面就是使用:

好了,把这个绑定的Converter属性设置成我们设计的转换类的实例就可以了。看一下程序的界面

本文参与 腾讯云自媒体分享计划 ,分享自作者个人站点/博客。
原始发表:2018-03-15 , 如有侵权请联系 cloudcommunity@tencent.com 删除
tcp/ip
jquery ui
wpf
网站
编程算法

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

tcp/ip
jquery ui
wpf
网站
编程算法
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
关于作者
黄昏前黎明后
中软数据技术总监
0
文章
0
累计阅读量
0
获赞
前往专栏
领券
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2023 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
成熟的饭盒  ·  WPF的MVVM框架Stylet开发文档 5. Actions_wpf action
2 周前
酒量大的蛋挞  ·  关于WPF的ViewModel中TextBox中文本变化但没有实时更改Bingding的值_wpf textbox 后台修改值textchanged不触发
2 周前
英俊的大熊猫  ·  【WPF】MVVM动态修改Bingding的另一种思路——用Style样式_wpf style binding
2 周前
温暖的火腿肠  ·  .NET Framework 的新功能 - .NET Framework | Microsoft Learn
1 周前
性感的炒饭  ·  南方日报:《新华字典》APP别一心向着“孔方兄”--观点--人民网
1 年前
豪情万千的眼镜  ·  新疆维吾尔自治区生态环境厅环境影响评价与排放管理处关于2024年2月29日建设项目环境影响评价文件受理情况的公示_项目受理公示_新疆维吾尔自治区生态环境厅
1 年前
可爱的小蝌蚪  ·  俄乌冲突对欧洲的经济影响进入新阶段
1 年前
性感的镜子  ·  《寻龙传说》藏有哪些东南亚元素?丨揭秘_信任
2 年前
愤怒的显示器  ·  元芳来了漫画免费 - 元芳来了漫画 - 漫画在线全集免费阅读 - 腾讯动漫
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号