C# Binding

1.谁是源, 谁是目标

数据从哪里来,谁就是源 ...数据要给谁,谁就是目标-----<<WPF深入浅出>>

2. 谁绑定(到)谁

谁需要数据, 谁写绑定表达式 .

" Binding对象"------- 在**<<WPF编程宝典>>** 中指的是 ++写 绑定表达式++ 的这方

案例1:

cs 复制代码
<StackPanel>

<Slider Name="sorce" Margin="3" Minimum="1" Maximum="40" Value="10" TickFrequency="1"         TickPlacement="TopLeft"/>

 <TextBlock Margin="10" Text="Hahaha" Name="target" FontSize="{Binding ElementName=sorce,Path=Value}"/>

 </StackPanel>

1.在上面代码的基础上,增加3个button,各自添加 单击事件

  1. 设置单击事件 修改 滑块 (Slider)的值(源)

结果:可以看到 目标 发生了变化

  1. 修改 button 按钮 事件 , 现在我们直接修改 目标 的值

结果:

1.没单击的时候,滑块功能 正常

2.单击 1次,确实可以修改TextBlock 的字体大小

  1. 再次不管单击 哪个button ,都无法修改 TextBlock 的值

  2. 滑块Slider功能失效了

双向绑定的诞生

1.绑定的模式

注意 : 下面绑定模式的案例 中 TextBox 绑定 Slider

先体验以下 ,Mode=OneWay 模式------->源发生变化 ,更新目标属性

对比TwoWay模式: 源 或者目标都会随着改变

对比OneTime模式:(滑块的Value="10" 这是初始值,我为什么要强调呢?)

对比 OneWayToSource模式:(显示绑定失败, 还是还是可以使用 ,和OneWay 模式相反)

<<wpf编程宝典>> <<WPF深入浅出>> 都有论述这部分内容, 这里形象的展示出来

多绑定

这里并不是链接数据绑定,下面才是 (TextBox.Text绑定到Slider.value TextBlock.FontSize 也绑定到Slider.value )

解释一下绑定过程: TextBox.Text---> TextBlock.FontSize -->滑块.Value

通过全部设置为 双向绑定模式, 最终实现曲线救国

上面所有的双向绑定示例中:TextBox 有两个缺陷:

  1. 可以输入非数字的值 (使用数据绑定验证 解决)

  2. 修改后只能使用 TAB 键,让它失去焦点,才能生效

++示例(TextBox 双向绑定 Slider )++

修改目标 后需要使用Tab键 ,才会更新

攻守执行异也 ,现在使用 Slider绑定TextBox

修改目标 会立即更新

我这里已经没有使用Mode =TwoWay ,使用默认的绑定 ,可以发现具有双向绑定的意思(拖动滑块可以改变 TextBox的值)..没有截图下来,自己实验....一定要知道,到底谁绑定了谁,


绑定更新

主要发生在反向的变化传递 Mode=TwoWay Mode=OneWayToSource)

修改目标 后需要使用Tab键 ,才会更新

++示例(TextBox 双向绑定 Slider )++

++示例(TextBox 反向绑定 Slider )++

++++

1.设置Binding.UpdateSourceTrigger属性为 PropertyChanged

2.设置Binding.UpdateSourceTrigger属性为Explicit

注意:这里还是 TextBox.Text 绑定 Slider .Value ,使用默认的绑定模式

xmal代码没有贴出,只是增加了一个按钮和单击事件 .主要按钮事件的后台代码中
<<WPF编程宝典>> 中
BindingExpression 对象从
目标获取.
Binding对象 说的是
目标

不更了.........明天再写吧

正在0基础学习 wpf中 ,只学过c语言和汇编 ,正在学习c# 语法基础,

如果你也正在学习,欢迎加企鹅群一起讨论学习 621022215

相关推荐
殳翰5 分钟前
下服务器端开发流程及相关工具介绍(C++)
开发语言·c++
落寞的星星35 分钟前
这个对象就包含了已经转换好的DFA和各种词法分析器运转所需要的参数。下一步,我们就可以用ScannerInfo对象创建出Scanner对象,请看下面的代码:
开发语言·c#
nothing&nowhere1 小时前
用 Python 做问卷数据清洗:无效样本检测与处理实战
开发语言·python·数据清洗·数据处理·问卷星·问卷星脚本·刷问卷
2601_961593421 小时前
Rust 开发环境配置繁琐?RustRover 开箱即用搞定编码调试
开发语言·后端·macos·rust
HZZD_HZZD2 小时前
DL/T 645-2026新国标深度解读与智能电表协议适配实战:从帧结构变化到Java采集器升级的全链路改造方案
java·开发语言
多加点辣也没关系4 小时前
JavaScript|第4章:类型转换
开发语言·javascript
聪慧的水蜜桃4 小时前
【YFIOs】用C#开发硬件之设备上云
开发语言·c#
yqcoder4 小时前
httpOnly 是什么,又有什么用?
开发语言·前端·javascript
wuqingshun3141595 小时前
重写equals而不重写hashCode,会出什么问题?
java·开发语言
飞猪~5 小时前
LangChain python 版本 第一集
开发语言·python·langchain