WPF数据绑定

article/2025/9/22 3:08:36

一、概念:什么是数据绑定?
WPF中的数据绑定:是在应用程序 UI 与业务逻辑之间建立连接的过程;
扩展:

1.为应用程序提供了一种表示数据和与数据交互的简单而又一致的方法。
2.元素能够以公共语言运行时 (CLR) 对象和 XML 的形式绑定到各种数据源中的数据。
3.数据绑定可能还意味着如果元素中数据的外部表现形式发生更改,则基础数据可以自动更新以反映更改。
4.一种典型用法是将服务器或本地配置数据放置到窗体或其他 UI 控件中。在 WPF 中,元素的依赖项属性可以绑定到 CLR 对象(包括 ADO.NET 对象或与 Web 服务和 Web 属性相关联的对象)和 XML 数据XmlNode。

二、具体概念定义:
基础模型:在这里插入图片描述
如上图所示,数据绑定实质上是绑定目标与绑定源之间的桥梁。

每个绑定的四个组件:绑定目标对象、目标属性(依赖项属性)、绑定源、绑定源值路径每个绑定的四个组件:绑定目标对象、目标属性(依赖项属性)、绑定源、绑定源值路径

数据流的方向
在这里插入图片描述

OneWay:绑定导致对源属性的更改会自动更新目标属性,但是对目标属性的更改不会传播回源属性。

  1. 适用于绑定的控件为隐式只读控件的情况。
  2. 可避免 TwoWay 绑定模式的系统开销

TwoWay:绑定导致对源属性的更改会自动更新目标属性,而对目标属性的更改也会自动更新源属性。

  1. 此绑定类型适用于可编辑窗体或其他完全交互式 UI 方案。

OneWayToSource 与 OneWay 绑定相反。

  1. 一个示例方案是您只需要从 UI 重新计算源值的情况。

OneTime 绑定未在图中显示,该绑定会导致源属性初始化目标属性,但不传播后续更改。

  1. 使用当前状态的快照适合使用的或数据状态实际为静态的数据。
  2. 如果要从源属性初始化具有某个值的目标属性,并且事先不知道数据上下文,则也可以使用此绑定类型。
  3. 此绑定类型实质上是 OneWay 绑定的简化形式,在源值不更改的情况下可以提供更好的性能。

扩展:

  1. 查看绑定方向:使用 GetMetadata 获取属性的属性元数据,然后检查 BindsTwoWayByDefault 属性的布尔值。
  2. 若要检测源更改(适用于 OneWay 和 TwoWay 绑定),则源必须实现一种合适的属性更改通知机制(如 INotifyPropertyChanged)

触发源的更新情况
绑定的 UpdateSourceTrigger 属性确定触发源更新的原因。
在这里插入图片描述
下表使用 TextBox 作为示例提供每个 UpdateSourceTrigger 值的示例方案:
在这里插入图片描述

三、创建绑定
指定绑定源
在元素上直接设置 DataContext 属性、从上级继承 DataContext 值(如第一个示例中的按钮)、
通过设置 Binding 上的 Source 属性来显式指定绑定源(如最后一个示例中的按钮),
还可以使用 ElementName 属性或 RelativeSource 属性指定绑定源。
指定值的路径
如果绑定源是一个对象,则可使用 Path 属性指定要用于绑定的值。
如果要绑定到 XML 数据,则可使用 XPath 属性指定该值。
在某些情况下,可以使用 Path 属性,即使在数据为 XML 时。 例如,如果要访问返回的 XmlNode(作为 XPath 查询的结果)的 Name 属性,则应使用 Path 属性和 XPath 属性。
Binding和BindingExpression
Binding 类是用于绑定声明的高级别类;
相关类 BindingExpression 是维持源与目标之间的连接的基础对象。
BindingExpression 是无法共享的实例表达式,其中包含有关 Binding 的所有实例信息。
可以通过对数据绑定对象调用 GetBindingExpression 的返回值来获取 BindingExpression 对象。
四、数据转换
在这里插入图片描述

通过实现 IValueConverter 接口来创建一个自定义转换器,在这些方案中,实现数据转换器是非常有意义的:

数据应根据区域性以不同方式显示。 例如,可能需要根据在特定区域性中使用的值或标准,来实现货币转换器或日历日期/时间转换器。
使用的数据不一定会更改属性的文本值,但会更改其他某个值(如图像的源,或显示文本的颜色或样式)。 在这种情况下,可以通过转换可能不合适的属性绑定(如将文本字段绑定到表单元格的 Background 属性)来使用转换器。
将多个控件或控件的多个属性绑定到相同数据。 在这种情况下,主绑定可能仅显示文本,而其他绑定则处理特定的显示问题,但仍使用同一绑定作为源信息。
对于 MultiBinding,可以使用自定义 IMultiValueConverter 从绑定的值生成最终值。 例如,可以从红色、蓝色和绿色的值来计算颜色,这些值可以是来自于相同或不同绑定源对象的值。
五、绑定到集合
绑定到数据集合是一个常见方案。 例如,一个常见方案是使用 ItemsControl(如 ListBox、 ListView 或 TreeView)来显示数据集合。
在这里插入图片描述

如何实现集合
WPF 提供 ObservableCollection 类,它是公开 INotifyCollectionChanged 接口的数据集合的内置实现。
如果您有高级方案并且希望实现自己的集合,请考虑使用 IList,它提供可以按索引逐个访问的对象的非泛型集合,因而可提供最佳性能。
集合视图

一旦 ItemsControl 绑定到数据集合,您可能希望对数据进行排序、筛选或分组。 若要执行此操作,可以使用集合视图,这是实现
ICollectionView 接口的类。

什么是集合视图

集合视图是位于绑定源集合顶部的一层,您可以通过它使用排序、筛选和分组查询来导航和显示源集合,而无需更改基础源集合本身。

ps:通过使用视图,可以通过多种不同的方式来显示相同数据。
例如,您可能希望在页面左侧显示按优先级排序的任务,而在页面右侧显示按区域分组的任务。

如何创建视图

创建和使用视图的一种方式是直接实例化视图对象并将其用作绑定源。

CollectionViewSource 类是继承自 CollectionView 的类的XAML代理。 视图的 Source
绑定到当前应用程序对象的 类型为 ObservableCollection集合 。 若要为同一集合创建另一个视图,可以创建另一个
CollectionViewSource 实例并为其提供另一个 x:Key 名称。

在这里插入图片描述

使用默认视图

一个绑定控件或代码对默认视图所做的更改(如排序或对当前项指针的更改,下文将对此进行讨论)会反映在到同一集合的所有其他绑定中。

包含ADO.NET数据表的集合视图
为了提高性能,ADO.NET DataTable 或 DataView 对象的集合视图会将排序和筛选工作委托给 DataView。 这会导致排序和筛选工作由数据源的所有集合视图分担。
若要使每个集合视图都能独立进行排序和筛选,请用每个集合视图自己的 DataView 对象来初始化它。
排序
通过使用视图,可以应用这种用户驱动的排序,而无需对基础集合进行任何更改,甚至不必再次查询集合内容。 有关示例,请参见 如何:在单击标题时对 GridView 列进行排序。

listingDataView.SortDescriptions.Add(new SortDescription("Category", ListSortDirection.Ascending));

筛选
视图还可以将筛选器应用于集合。

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);

如果直接使用一个 CollectionView 类而不是 CollectionViewSource,则应使用 Filter 属性来指定回调。

分组
所有的集合视图都支持分组功能,用户可以利用此功能将集合视图中的集合划分成逻辑组。

当前项指针
由于 WPF 只通过使用视图(您指定的视图或集合的默认视图)绑定到集合,因此到集合的所有绑定都有一个当前项指针。 绑定到视图时,Path 值中的斜杠(“/”)字符用于指定视图的当前项。
当前项指针可能会受对集合应用的任何排序或筛选操作的影响。
主-从绑定方案
通过将两个或更多控件绑定到同一视图可以轻松地实现主-从方案。
六、数据模板化
见后续一章详述
七、数据验证
将验证规则与绑定关联
使用 WPF 数据绑定模型可以将 ValidationRules 与 Binding 对象相关联。
ValidationRule 对象可检查属性的值是否有效。 WPF 具有以下两种类型的内置 ValidationRule 对象:
ExceptionValidationRule 检查在更新绑定源属性的过程中引发的异常。
DataErrorValidationRule 对象检查由实现 IDataErrorInfo 接口的对象所引发的错误。
也可以通过从 ValidationRule 类派生和实现 Validate 方法来创建自己的验证规则。
提供视觉反馈
提供这种反馈的一种方式是将 Validation.ErrorTemplate 附加属性设置为自定义 ControlTemplate。
验证过程
目标的值传输到绑定源属性时通常会发生验证。 这种情况发生在 TwoWay 和 OneWayToSource 绑定上。
调试机制
可以在绑定相关对象上设置附加属性 PresentationTraceSources.TraceLevel 以接收有关特定绑定的状态的信息。


http://chatgpt.dhexx.cn/article/y6hond4f.shtml

相关文章

WPF入门0:WPF的基础知识

WPF入门0:WPF的基础知识 WPF 可创建动态的数据驱动的呈现系统。 系统的每一部分均可通过驱动行为的属性集来创建对象。 数据绑定是系统的基础部分,在每一层中均进行了集成。 传统的应用程序创建一个显示内容,然后绑定到某些数据。 在 WPF 中…

WPF 常用控件

WPF六种常用控件:布局控件、内容控件、带标题内容控件、条目控件、带标题条目控件和特殊内容控件(如:TextBox,TextBlock,Image等)。 实例链接:WPF常用控件实例 Window(窗体) Winodw窗体派生自ContentControl,有一个Content属性,里…

什么是WPF,对WPF的认识

一,什么是WPF WPF(Windows Presentation Foundation)翻译为中文“Windows呈现基础” 是微软新发布的Vista操作系统的三个核心开发库之一,是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分…

关于VRRP

目录 HSRP的定义 小结: VRRP作用: VRRP的好处: 工作原理: VRRP与浮动路由的区别 怎么样让路由器成为主路由器呢? 项目实施 拓扑图 步骤 1、打开二层交换机 2、打开三层交换机 3、打开路由器 4、为两台pc机配置ip地址子网掩码和网关 5、测试连通性 总…

华为交换机RRPP单环配置

华为交换机RRPP单环配置 rrpp相关概念(取自华为官方文档) 控制VLAN(Control VLAN)和数据VLAN(Data VLAN) 控制VLAN是相对于数据VLAN来说的。在RRPP域中,控制VLAN只用来传递RRPP协议报文。与控…

VRRP(12)

VRRP VRRP的作用 提供了局域网上的设备备份机制。VRRP是一种容错协议,它保证当主机的下一跳路由器坏掉时,可以及时由另一台路由器来代替,从而保证通讯的连续性和可靠性。 VRRP工作时会在网络中加入一个含有虚拟IP和虚拟MAC地址的虚拟路由器…

RIP

路由信息协议 RIP(Routing Information Protocol) 是内部网关协议 IGP中最先得到广泛使用的协议。RIP 是一种分布式的基于距离向量的路由选择协议。 RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。 RIP是应用层协议。使用UDP数据报传送。…

RRPP 演示实例

RRPP 概念:快速环网保护协议RRPP(Rapid Ring Protection Protocol)是一个专门应用于以太网环的链路层协议。它在以太网环完整时能够防止数据环路引起的广播风暴,而当以太网环上一条链路断开时能迅速启用备份链路恢复环网上各个节点…

H3C交换机RRPP配置

配置Device A # 创建VLAN 2&#xff5e;30&#xff0c;将这些VLAN都映射到MSTI 1上&#xff0c;并激活MST域的配置。 <DeviceA> system-view[DeviceA] vlan 2 to 30Please wait… Done.[DeviceA] stp region-configuration[DeviceA-mst-region] instance 1 vlan 2 to 3…

H3C RRPP实验

实验拓扑 H3C RRPP实验 图 1-1 注&#xff1a;如无特别说明&#xff0c;描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备&#xff0c;R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备&#xff0c;以此类推&#xff1b;另外&#xff0c;同一网段中&#xff0c;IP …

RRPP 实验

实验拓扑 注&#xff1a;如无特别说明&#xff0c;描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备&#xff0c;R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备&#xff0c;以此类推&#xff1b;另外&#xff0c;同一网段中&#xff0c;IP 地址的主机位为其设备编…

VRRP——VRRP讲解

目录 VRRP作用 VRRP的基本概念 基本信息 优先级 主备关系 VRRP报文 VRRP定时器 VRRP状态 VRRP版本 VRRP基本工作原理 VRRP高级特性 VRRP作用 VRRP为虚拟路由冗余协议 将多个设备接口划分在一起&#xff0c;称为一个备份组&#xff08;有主备关系---优先级高的为主&am…

以太网环网的快速环保护协议:RRPP,配有专属案例,爽歪歪!

你好&#xff0c;这里是网络技术联盟站。 今天给大家带来RRPP协议的介绍以及实验配置&#xff0c;希望对大家有所帮助&#xff01; 文章目录 什么是RRPP协议RRPP协议的功能RRPP协议的优势RRPP配置案例背景介绍网络拓扑RRPP配置步骤步骤 1&#xff1a;启用RRPP协议步骤 2&#…

BS架构和CS架构的优缺点

1、CS、BS架构定义 CS(Client/Server):客户端----服务器结构。C/S结构在技术上很成熟,它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。因为客户端要负责绝大多数的业务逻辑和UI展示,又称为胖客户端。它充分利用两端硬件,将任…

BS架构说明以及网页组成

B/S架构 1.B/S框架&#xff0c;意思是前端&#xff08;Browser 浏览器&#xff0c;小程序、app、自己写的&#xff09;和服务器端&#xff08;Server&#xff09;组成的系统的框架结构 2.B/S框架&#xff0c;也可理解为web架构&#xff0c;包含前端、后端、数据库三大组成部分 …

B/S三层体系结构

为什么80%的码农都做不了架构师&#xff1f;>>> ASP.NET的三层结构因为每一层都可以在仅仅更改很少量的代码后&#xff0c;就能放到物理上不同的服务器上使用&#xff0c;因此结构灵活而且性能更佳。此外&#xff0c;每层做些什么其它层是完全看不到的&#xff0c;…

B/S结构和C/S结构

在系统开发的网络结构模式设计时&#xff0c;常常会考虑B/S结构还是C/S结构。生活中&#xff0c;类似于使用浏览器网页进行访问的&#xff0c;就是B/S结构&#xff0c;用户无需安装特定的APP。类似于微信、QQ、王者荣耀等等需要下载APP的&#xff0c;或者电脑中安装的微信、英雄…

B/S结构和C/S结构,以及区别和联系

B/S和C/S都是随着互联网的发展而出现的一种网络结构模式&#xff0c;而其用的非常广泛&#xff0c;在我们生活中都很常见。那它们到底是什么呢&#xff1f;接下来就详细的介绍一下B/S和C/S。 一、B/S结构 B是英文单词“Browser”的首字母&#xff0c;即浏览器的意思&#xff1…

BS架构及其运行原理

一. B/S的概念 B/S&#xff08;Brower/Server,浏览器/服务器&#xff09;模式又称B/S结构&#xff0c;是Web兴起后的一种网络结构模式。Web浏览器是客户端最主要的应用软件。 这种模式统一了客户端&#xff0c;将系统功能实现的核心部分集中到服务器上&#xff0c;简化了系统的…