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

WPF之绑定!

文章目录

  • 前言
  • 一、绑定基础
  • 二、使用
    • 1.XML元素之间的绑定
    • 2.绑定模式
    • 绑定模式分类表
    • 3.使用ListBox绑定


前言

WPF之绑定!


一、绑定基础

绑定源:通常是一个数据对象,例如类实例、集合或 XML 数据。
绑定目标:一般是一个 UI 元素的属性。
数据绑定的核心元素
Binding 对象:描述了源属性和目标属性之间的连接。
Binding Target:通常是一个 DependencyProperty(依赖属性)。
Binding Source:可以是任意对象。
DataContext:数据上下文,通常用于为整个控件树提供绑定源的默认数据源。
数据转换:在源和目标之间转换数据,例如格式化显示数据。

二、使用

1.XML元素之间的绑定

XML元素之间的绑定

<TextBox Text="{Binding ElementName=slider, Path=Value}" Margin="5" Height="30"/>

Text属性通过数据绑定(Binding)连接到Slider的Value属性。
ElementName=slider: 绑定源是名为slider的控件。
Path=Value: 绑定到Slider的Value属性(即滑块当前值)。绑定到那个属性
​​效果​​:当拖动滑块时,这个文本框会实时显示滑块当前值(双向绑定默认,所以如果用户在文本框中输入有效数值,滑块也会相应移动)。

<Grid><StackPanel><Slider x:Name="slider" Margin="5"/><TextBox Text="{Binding ElementName=slider,Path=Value}"    Margin="5" Height="30"/><TextBox  Margin="5" Height="30"/><TextBox  Margin="5" Height="30"/></StackPanel>
</Grid>

在这里插入图片描述

2.绑定模式

绑定模式分类表

绑定模式数据流向默认适用控件应用场景性能特点
OneWay源 → 目标TextBlock, Label, ProgressBar数据显示、计算结果展示中等
TwoWay源 ↔ 目标TextBox, Slider, CheckBox表单输入、用户配置设置较高
OneTime仅初始时所有显示控件静态数据、初始化配置最低
OneWayToSource目标 → 源Slider, ScrollBar用户输入收集、无初始值绑定中等
Default自动决定-通用场景自动优化
<Grid><StackPanel><Slider x:Name="slider" Margin="5"/><!-- 只显示第一次的数据源的值 --><TextBox Text="{Binding ElementName=slider,Path=Value, Mode=OneTime}"    Margin="5" Height="30"/><!-- 单向绑定 数据源到目标 --><TextBox Text="{Binding ElementName=slider,Path=Value,Mode=OneWay}"  Margin="5" Height="30"/><!-- 单向绑定 目标到数据源 --><TextBox Text="{Binding ElementName=slider,Path=Value, Mode=OneWayToSource}"  Margin="5" Height="30"/><!-- 双向绑定 目标到数据源 数据源到目标 --><TextBox Text="{Binding ElementName=slider,Path=Value, Mode=TwoWay}"  Margin="5" Height="30"/><!-- 与双向绑定一样 --><TextBox Text="{Binding ElementName=slider,Path=Value, Mode=Default}"  Margin="5" Height="30"/></StackPanel>
</Grid>

效果图
在这里插入图片描述

3.使用ListBox绑定

public class ViewAViewModel:BindableBase
{// 字符串集合属性private ObservableCollection<string> _items;public ObservableCollection<string> Items{get => _items;set => SetProperty(ref _items, value);}// 自定义对象集合属性private ObservableCollection<Person> _persons;public ObservableCollection<Person> Persons{get => _persons;set => SetProperty(ref _persons, value);}// 构造函数public ViewAViewModel(){// 初始化字符串集合Items = new ObservableCollection<string>{"项目 1","项目 2","项目 3"};// 初始化自定义对象集合Persons = new ObservableCollection<Person>{new Person { Id = 1, Name = "张三", Age = 30 },new Person { Id = 2, Name = "李四", Age = 25 },new Person { Id = 3, Name = "王五", Age = 28 }};}
}
// 自定义模型类
public class Person : BindableBase
{private int _id;public int Id{get => _id;set => SetProperty(ref _id, value);}private string _name;public string Name{get => _name;set => SetProperty(ref _name, value);}private int _age;public int Age{get => _age;set => SetProperty(ref _age, value);}
}
    </Grid><!-- 定义资源 --><UserControl.Resources><!-- 自定义数据显示模板 --><DataTemplate DataType="{x:Type local:Person}"><StackPanel Orientation="Horizontal" Margin="5"><TextBlock Text="{Binding Id}" Width="30"/><TextBlock Text="{Binding Name}" Width="100" FontWeight="Bold"/><TextBlock Text="{Binding Age}" Width="50"/></StackPanel></DataTemplate></UserControl.Resources>
```
---
效果图
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b3040a3c38e04ab18102e7690448e042.png)
http://www.lryc.cn/news/617260.html

相关文章:

  • 源码分析Eino框架工具调用--创建篇
  • 瑞芯微rk3588:yolov8-obb训练实战笔记
  • 云原生环境 Prometheus 企业级监控实战
  • 容器 K8S Docker Kata 学习(一)
  • k8s的calico是什么作用,举例一下
  • 【软考中级网络工程师】知识点之 UDP 协议:网络通信中的高效轻骑兵
  • k8s PV和PVC开始总结
  • AI时代基于云原生的 CI/CD 基础设施 Tekton
  • RabbitMQ 声明队列和交换机详解
  • HTTPS 协议原理 ——4种方案
  • HTTPS的应用层协议
  • 2024年ESWA SCI1区TOP,自适应种群分配和变异选择差分进化算法iDE-APAMS,深度解析+性能实测
  • 在 ASP.NET 项目中用 C# 生成二维码
  • 为 Promethus 配置https访问
  • 无人机航拍数据集|第12期 无人机停车场车辆计数目标检测YOLO数据集1568张yolov11/yolov8/yolov5可训练
  • FP32、BF16、FP16三种方式比较
  • 计算机视觉CS231n学习(7)
  • 《范仲淹传》读书笔记与摘要
  • MySQL数据库简介
  • MySQL-日志
  • Vue 3 快速入门 第六章
  • Linux操作系统从入门到实战(十九)进程状态
  • JS-第二十三天-正则
  • 大数据量下分页查询性能优化实践(SpringBoot+MyBatis-Plus)
  • 集成电路学习:什么是URDF Model统一机器人描述格式模型
  • ZeroNews:如何构建安全(无需 V*N!)的工业物联网连接
  • 大模型落地:AI 技术重构工作与行业的底层逻辑
  • Salesforce案例:零售企业会员积分体系
  • 【软考架构】需求工程中,系统分析与设计的结构化方法
  • [Shell编程] Shell 编程之免交互