首页 > 其他分享 >Wpf基础入门——绑定(Binding)

Wpf基础入门——绑定(Binding)

时间:2023-05-29 21:12:22浏览次数:41  
标签:对象 绑定 Binding 使用 Path Wpf 数据 属性

本篇文章学习于: 刘铁猛老师《深入浅出WPF》

Bing基础

Binding更注重表达它是一种像桥梁一样的关联关系。WPF中,正是在这段桥梁上我们有机会为往来流通的数据做很多事情。
如果把Binding比作数据的桥梁,那么它的两端分别是Binding的源(Source)和目标(Target)。
一般情况下,Binding源是逻辑层的对象,Binding 目标是UI层的控件对象,这样,数据就会源源不断通过Binding送达UI层、被UI层展现,也就完成了数据驱动UI的过程。
Binding模型

Binding的源与路径

Binding的源也就是数据的源头。Binding对源的要求并不苛刻——只要它是一个对象,并且通过属性(Property)公开自己的数据,它就能作为Binding的源。

把控件作为绑定源与Binding标记扩展

image.png

控制Binding的方向及数据更新

Binding在源与目标之间架起了沟通的桥梁,默认情况下数据既能够通过Binding送达目标,也能够从目标返冋源(收集用户对数据的修改)。有时候数据只需要展示给用户、不允许用户修改,这时候可以把Binding模式更改为从源向目标的单向沟通。Binding还支持从目标向源的单向沟通以及只在Binding关系确立时读取一次数据,这需要我们根据实际情况去选择。
控制Binding 数据流向的属性是Mode , 它的类型是BindingMode 枚举。BindingMode 可取值为 TwoWay、OneWay、OnTime、OneWayToSource 和 Default。
这里的 Default 值是指 Binding 的模式会根据目标的实际情况来确定,比如若是可编辑的(如TextBox.Text属性),Default就采用双向模式;若是只读的(TextBlock.Text)则采用单向模式。
image.png
image.png

Binding的路径(Path)

作为Binding源的对象可能有很多属性,通过这些属性Binding源可以把数据暴露给外界。那么,Binding到底需要关注哪个属性的值呢?这就需要由Binding的Path属性来指定了。

  • Binding还支持多级路径(通俗地讲就是一路“点”下去)。
  • 集合类型的索引器(Indexer)又称为带参属性。既然是属性,索引器也能作为Path来使用
  • 当使用一个集合或者DataView作为Binding源时,如果我们想把它的默认元素当作Path使用,则需要使用:

image.png

  • 如果集合元素的属性仍然还是一个集合,我们想把子级集合中的元素当作Path,则可以使用多级斜线的语法(即一路“斜线”下去)

image.png

没有“Path”的Binding

有的时候我们会在代码中看到一些Path是一个“.”或者干脆没有Path的Binding,着实让人摸不着头脑。原来,这是一种比较特殊的情况一Binding源本身就是数据且不需要Path来指明。
典型的,string, int等基本类型就是这样,他们的实例本身就是数据,我们无法指出通过它的哪个属性来访问这个数据,这时我们只需将Path的值设置为“.”就可以了。在XAML代码里这个"."可以省略不写,但在C#代码里却不能省略。
image.png

为Binding指定源(Source)的几种方法

Binding的源是数据的来源,所以,只要一个对象包含数据并能通过属性把数据暴露出来,它就能当作Binding的源来使用。包含数据的对象比比皆是,但必须为Binding的Source指定合适的对象Binding才能正确工作
如下:
(1)没有 Source 的 Binding------- 使用 DataContext 作为 Binding 的源
(2)使用集合对象作为列表控件的ItemsSource
(3)使用ADO.NET对象作为Binding的源
(4)使用XML数据作为Binding的源
(5)使用LINQ检索结果作为Binding的源
(6)使用ObjectDataProvider对象作为Binding的源
(7)使用Binding的RelativeSource

Binding对数据的转换与校验

Binding的作用就是架在Source与Target之间的桥梁,数据可以在这座桥梁的帮助下来流通。不仅如此,当Binding两端要求使用不同的数据类型时,我们还可以为数据设置转换器。
Binding用于数据有效性校验的关卡是它的ValidationRules属性,用于数据类型转换的关卡是它的Converter属性

MultiBinding (多路 Binding )

有的时候UI要需要显示的信息由不止一个数据来源决定,这时候就需要使用MultiBinding,即多路Binding。 MultiBinding与Binding 一样均以BindingBase为基类,也就是说,凡是能使用Binding对象的场合都能使用MultiBinding。
MultiBinding 示意图

image.png

标签:对象,绑定,Binding,使用,Path,Wpf,数据,属性
From: https://www.cnblogs.com/swbna/p/17441663.html

相关文章

  • Wpf基础入门——资源(Resources)
    本篇文章学习于:刘铁猛老师《深入浅出WPF》WPF对象级资源每个WPF的界面元素都具有一个名为Resources的属性,这个属性继承自FrameworKElement类,其类型为ResourceDictionary。ResourceDictionary能够以“键一值”对的形式存储资源,当需要使用某个资源时,使用“键一值”对可以索引......
  • WPF概述
    文章来源:WindowsPresentationFoundation-WPF.NETFrameworkWPF概述WindowsPresentationFoundation(WPF)可以创建适用于Windows且具有非凡视觉效果的桌面客户端应用程序。WPF的核心是一个与分辨率无关且基于矢量的呈现引擎,旨在充分利用现代图形硬件。WPF通过一......
  • Wpf基础入门——控件介绍
    本篇文章学习于:刘铁猛老师《深入浅出WPF》控件到底是什么?WPF中是数据驱动UI,数据是核心、是主动的;UI从属于数据并表达数据、是被动的。Control是数据和行为的载体,而无需具有固定的形象。控件的派生关系如下:WPF的内容模型各类内容模型详解我们把符合某类内容模型的UI元......
  • WPF 跨用户控件传递数据
    WPF跨用户控件传递数据前言在写Wpf程序中,经常为了解耦,会写不同的用户控件组装到一个界面上,这样便于管理。但是呢,如果直接通过这个大的界面的某控件调用另一个其他用户控件中的控件,是不行滴!所以,这就是写本篇文章的理由。项目实现项目结构2个用户控件【1个存放Button、1个存......
  • WPF 入门笔记 - 02 - 布局综合应用
    本篇博文对接上篇末尾处WPF常用布局控件的综合应用,为痕迹g布局控件介绍课后作业的一个思路方法。前言首先来谈一谈布局原则:WPF窗口只能包含一个元素(Window元素属于内容控件,内容控件只允许有一个子元素),所以我们得在窗口中放置一个容器,才能使我们的窗口放置更多的内容。所以......
  • WPF中使用EntityFramework6和Identity
    2023年05月28日VS2022WFP.NETFramework,Version=v4.6.2测试通过NUGET:EntityFramework6.4.4,Microsoft.AspNet.Identity.EntityFramework2.2.3  //扩展内置的identityuserpublicclassApplicationUser:IdentityUser{publicstringSex{set;g......
  • WPF入门教程系列二十六——DataGrid使用示例(3)
    WPF入门教程系列目录WPF入门教程系列二——Application介绍WPF入门教程系列三——Application介绍(续)WPF入门教程系列四——Dispatcher介绍WPF入门教程系列五——Window介绍WPF入门教程系列十一——依赖属性(一)WPF入门教程系列十五——WPF中的数据绑定(一) 五、DataGr......
  • 读取WINCC归档数据-WPF程序-2
       读取WINCC归档数据-可以读取实时WINCC数据和以往的数据,本文介绍读取实时数据的方法。  读取实际运行PLC的方法要简单些,这里介绍的是仿真读取。  1.运行博图并仿真程序 2.运行WINCC 3.用MicrosoftSQLServerManagementStudio18监视连接  ......
  • WPF 设置圆角窗体,通过ListView模拟下拉组合款
    界面:<Windowx:Class="WpfApp2.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.micros......
  • WPF入门实例 WPF完整例子 WPF DEMO WPF学习完整例子 WPF实战例子 WPF sql实例应用 WPF
    WPF和WinForms都是用于创建Windows桌面应用程序的开发框架,它们有一些相似之处,但也有很多不同之处。在开发速度方面,这取决于具体情况。如果您熟悉WinForms开发并且正在开发简单的界面应用程序,则可能会比使用WPF更快速地完成任务。然而,在设计和实现复杂的用户界面时,WPF可......