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 模式时能发挥最大威力。

相关推荐
qq_369224339 小时前
Windows全系通用!ntdll.dll文件丢失、报错、闪退问题的完整排查与修复教程
windows·dll·dll修复·dll丢失·dll错误
2601_9620725511 小时前
李梦娇常识4600问|题库|打印版
sql·华为od·华为·c#·华为云·.net·harmonyos
阿米亚波12 小时前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
caimouse13 小时前
Reactos 第 10 章 网络操作 — 10.3.1 NIC驱动
网络·windows
m0_5474866613 小时前
《C#语言程序设计与实践》 全套PPT课件
c语言·c#·c语言程序设计
初圣魔门首席弟子14 小时前
Node.js 详细介绍(知识库版)
windows·qt·node.js·知识库
叶帆15 小时前
【YFIOs】用C#开发硬件之设备上云
开发语言·unity·c#
IT方大同15 小时前
(嵌入式操作系统)信号量
嵌入式硬件·c#
Chris _data15 小时前
WPF 学习第三天 — Modbus RTU 串口通信
hadoop·学习·wpf
CHENG-JustDoIt15 小时前
AI工具 | 爆火开源项目Odysseus AI 工作台:从项目介绍、部署情况及其使用等多方位分析指南(含详细步骤)
大数据·人工智能·windows·python·ai·开源·github