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

WPF 数据绑定详解

数据绑定是 WPF 中非常重要的特性,它建立了 UI 元素与数据源之间的连接,使数据能够在两者之间自动同步。

绑定的两种常见情况
  1. 绑定到元素上

    将一个 UI 元素的属性绑定到另一个 UI 元素的属性上

    <!-- 示例:将TextBox的Text属性绑定到Slider的Value属性 -->
    <Slider x:Name="slider" Minimum="0" Maximum="100" Value="50"/>
    <TextBox Text="{Binding ElementName=slider, Path=Value, StringFormat=F0}"/>
  2. 绑定到非元素上

    将 UI 元素绑定到数据对象(如 ViewModel、业务对象等)

    <!-- 示例:绑定到数据对象的属性 -->
    <TextBox Text="{Binding UserName}"/>

    后台需要设置 DataContext:

    this.DataContext = new UserViewModel(); // UserViewModel包含UserName属性
五种绑定模式
  1. Default(默认模式)

    • 根据目标属性自动确定模式

    • 多数属性为 OneWay,可编辑控件(如 TextBox 的 Text)默认为 TwoWay

    <TextBox Text="{Binding UserName}"/> <!-- 默认为TwoWay -->
    <TextBlock Text="{Binding UserName}"/> <!-- 默认为OneWay -->
  2. OneWay(单向绑定)

    • 数据源变化时更新目标,但目标变化不影响数据源

    <TextBlock Text="{Binding UserName, Mode=OneWay}"/>
  3. TwoWay(双向绑定)

    • 数据源变化更新目标,目标变化也更新数据源

    <TextBox Text="{Binding UserName, Mode=TwoWay}"/>
  4. OneTime(一次性绑定)

    • 只在初始时将数据源的值更新到目标,之后不再同步

    <TextBlock Text="{Binding InitialValue, Mode=OneTime}"/>
  5. OneWayToSource(单向到源)

    • 目标变化时更新数据源,但数据源变化不影响目标

    <TextBox Text="{Binding FilterText, Mode=OneWayToSource}"/>
绑定的补充属性
  • UpdateSourceTrigger:指定何时更新数据源

    <!-- 失去焦点时更新数据源 -->
    <TextBox Text="{Binding UserName, UpdateSourceTrigger=LostFocus}"/>
  • StringFormat:格式化绑定的字符串

    <TextBlock Text="{Binding Price, StringFormat=C}"/> <!-- 货币格式 -->
  • FallbackValue:绑定失败时显示的值

    <TextBlock Text="{Binding UnknownProperty, FallbackValue='N/A'}"/>

通过合理使用不同的绑定模式,可以构建响应式强、维护性好的 WPF 应用程序,特别是结合 MVVM 模式时能发挥最大威力。

http://www.dtcms.com/a/540616.html

相关文章:

  • 【Swift】LeetCode 54. 螺旋矩阵
  • 河北邯郸seo网站建设网站优化专业网站的定义
  • Python测试题2
  • WordPress 上传图片报错:明明是 PNG,却提示「请转换为 JPEG 或 PNG 格式」?
  • annotation-logging-guide
  • 没有公司做网站重庆网站推广入口
  • 管理k8s的资源类型(PV/PVC)的脚本
  • 【记录】飞书多维表格|做自动显示当前填写情况(包括填写人数、未填写情况、最高分和平均分)的收集表
  • 清除入侵痕迹(winLinuxweb)
  • 找设计师的网站淘宝客 网站建设
  • 第六部分:VTK进阶(第175章 并行 IO管线与检查点)
  • 河南海绵城市建设网站wordpress中文版书籍
  • Opencv(三): 二值化
  • GitHub使用技巧——上传本地项目
  • 网站建设用途一个旅游网站建设需求分析
  • 甜品网站网页设计代码网上免费推广
  • 渗透测试工具 windows上搭建vmware kali-linux
  • ecstore等产品开启缓存-后台及前台不能登录原因-setcookie+session问题
  • 哨兵原理、Redis分片、Redis数据结构、内存回收、缓存问题以及分布式事务相关内容(CAP、BASE、AT脏写及其解决、TCC、最大努力通知)
  • Windows图标修复--缓存重建教程
  • 服务器上用Slurm 管理训练bash 脚本任务,申明使用GPU
  • 上海小程序网站开发公司wordpress国外主题下载地址
  • 新城镇建设官方网站kali建设网站
  • 便携式el检测仪:确保光伏组件的质量与性能稳定
  • 英一2015年真题学习笔记
  • Docker 部署银河麒麟(Kylin Linux)全流程教程
  • GPT、DeepSeek等大语言模型应用
  • 大语言模型基础LLM:Transformer和大模型
  • 本地用docker开发的php 程序如何部署到阿里云的ecs上
  • html css js网页制作成品——一念关山HTML+CSS网页设计(5页)附源码