当前位置: 首页 > news >正文

第六章-元素绑定

1、元素简单绑定

  <StackPanel><TextBlock Text="{Binding ElementName=slider, Path=Value}" Margin="10" FontSize="20"></TextBlock><Slider x:Name="slider" Height="20" Width="200" Margin="50" Maximum="100" Minimum="0" VerticalAlignment="Center"></Slider></StackPanel>

 

2、绑定模式

  单向绑定OneWay

  双向绑定:TwoWay

  单次绑定:OneTime(源变化一次后,目标不跟随继续变化)

  OneWayToSource:与OneWay方向相反

 

3、多绑定

 

4、绑定更新

  双向绑定时:文本框消息改变后,源要在文本框失去焦点才能更新

<StackPanel><TextBox Text="{Binding ElementName=slider, Path=Value,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="10" FontSize="20"></TextBox><Slider x:Name="slider" Height="20" Width="200" Margin="50" Maximum="100" Minimum="0" VerticalAlignment="Center"></Slider><Button Height="30" Width="50"></Button>
</StackPanel>
 UpdateSourceTrigger:

PropertyChanged:当目标属性发生变化时立即更新源
LostFocus当目标属性发生变化并且目标丢失焦点时更新源
Explicit:除非调用 BindingExpression.UpdateSource()方法,否则无法更新源
Default:根据目标属性的元数据确定更新行为(从技术角度看,是根据FrameworkPropertyMetadataDefaultUpdateSourceTrigger属性决定更新行为)。大多数属性的默认行为是PropertyChanged,但TextBox.Text属性的默认行为是LostFocus

5、绑定延迟

  加入Delay属性即可

 

6、Source属性

  指定绑定的数据对象

 <Window.Resources><FontFamily x:Key="CustomFont">Calibri</FontFamily></Window.Resources><StackPanel><!--指向一些已经准备的静态对象,为设置Binding.Source属性,需要结组静态拓展标记--><TextBlock Text="{Binding Source={x:Static SystemFonts.IconFontFamily},Path=Source}"></TextBlock><!--绑定资源--><TextBlock Text="{Binding Source={StaticResource CustomFont},Path=Source}"></TextBlock></StackPanel>

 

7、RelativeSource属性

  寻找上一级的元素,例如控件样式、数据模板当中常用

 <Grid Background="Wheat"><TextBlock Height="50" Width="90" Background="{Binding Path=Background,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid}}}"></TextBlock></Grid>

 

8、DataContext属性

  可以在其父元素及以上元素指定数据对象

  <StackPanel DataContext="{x:Static SystemFonts.IconFontFamily}"><TextBlock Text="{Binding Source}"></TextBlock><TextBlock Text="{Binding LineSpacing}"></TextBlock><TextBlock Text="{Binding FamilyTypefaces[0].Style}"></TextBlock><TextBlock Text="{Binding  FamilyTypefaces[0].Weight}"></TextBlock></StackPanel>

后台代码当中指定数据上下文DataContext

 public partial class 元素绑定 : Window{public 元素绑定(){InitializeComponent();this.DataContext = new Student { Name="张三",Age="17"};}class Student{public string Name {  get; set; }public string Age {  get; set; }}}
 <TextBlock Text="{Binding Name}"></TextBlock><TextBlock Text="{Binding Age}"></TextBlock>

 

http://www.jsqmd.com/news/94922/

相关文章:

  • Labview实现四工位相机同时扫二维码、HTTP协议Mes上传及汇川PLC通讯协议
  • 2026毕设ssm+vue基于的作业管理系统论文+程序
  • 【自然语言处理】自然语言处理中数据集的开发与测试:从基础划分到稳健评估的全维度实践
  • 关于浔川 AI 翻译项目推进建议的公告
  • 如何将gpt-oss-20b封装成REST API供外部调用
  • 滚动轴承缺陷动力学模型:从理论到实践
  • Halcon条码技术详解(含 Halcon 应用示例)
  • 【ACWing】111. 畜栏预定
  • GG3M (鸽姆) Global Governance Meta-Mind Model: 商业计划书 Global Civilization Governance OS (Eastern Wisdom
  • C#+VisionMaster联合开发控件篇(八)_参数配置带渲染窗体
  • 线性表之顺序栈
  • Fedora , Linux 创始人 Linus 的选择 —— 目前他生活在加拿大
  • 基于springboot的药店药品管理系统的设计与实现(源码+lw+远程部署)
  • groovy基础了解
  • 深度解析 Google JAX 全栈:带你上手开发,从零构建神经网络
  • 基于python的药店药品管理系统的设计与实现(源码+lw+远程部署)
  • 2026毕设ssm+vue基于高校新生报到论文+程序
  • 金融数据分析-申万行业数据分析系统(Python+Streamlit)
  • 百度搜索不到的Qwen3-VL-8B安装包获取渠道揭秘
  • 影刀使用全局附值控制操作次数
  • CTF —— 网络安全大赛!从入门到精通,收藏这篇就够了
  • ENSP抓包分析Qwen3-VL-30B API通信协议细节
  • Stm32_2:蜂鸣器、按键、继电器
  • Qwen3-8B vs 其他8B模型:逻辑推理能力全面对比测评
  • 【优化分配】基于遗传算法GA求解机场登机口分配优化问题(目标函数:油耗 靠桥率)附Matlab代码
  • 【2025最新】网络安全从入门到精通(超详细)学习路线!
  • 2026毕设ssm+vue基于高校教师个人主页网站的设计与实现论文+程序
  • 基于FLUX.1-dev的文生图技术博客:提升提示词遵循度的秘诀
  • Hadoop与Python:PySpark大数据处理指南
  • 又一个绿色神器的蓝屏修复工具