第9章 数据绑定

目录

  • 第9章 数据绑定
    • 9.1 数据绑定基本概念
      • 9.1.1 绑定和绑定表达式
      • 9.1.2 绑定模式(Mode属性)
      • 9.1.3 控制更新源的时间(UpdateSourceTrigger)
      • 9.1.4 绑定路径语法(Path属性)
      • 9.1.5 数据转换
    • 9.2 简单数据绑定
      • 9.2.1 在单个属性中直接指定绑定源
      • 9.2.2 通过DataContext将多个属性绑定到相同的源
  • 第10章 数据库与实体数据模型
    • 10.1 创建数据库和表
      • 10.1.1 ADO.NET数据访问技术
      • 10.1.2 SQL Server 2014简介
      • 10.1.3 创建LocalDB数据库
    • 10.2 利用实体框架创建实体数据模型
      • 10.2.1 实体框架基本概念
      • 10.2.2 实体框架开发模式

9.1 数据绑定基本概念

WPF提供了三种数据绑定技术:Binding、MultiBinding、PriorityBinding

这三种Binding的基类都是BindingBase,而BindingBase又继承于MarkupExtension

在WPF中,ContentControl(如Button)和ItemsControl(如ListBox和ListView)都提供了内置的功能,使单个数据项或数据项集合可以进行灵活的数据绑定,并可以生成排序、筛选和分组后的视图

System.Windows.Data.Binding类:

将**“目标”的附加属性数据“源”的属性**绑定在一起,数据源可以是任何修饰符为public的属性

绑定语法

<object property="{Binding  declaration}" .../>
//object为绑定目标;declaration为绑定声明,如果有多个绑定声明,各绑定声明之间用逗号分隔
<Slider Name="slide1" Maximum="100" />
<TextBlock Text="{Binding ElementName=slide1,Path=Value}" />

9.1.1 绑定和绑定表达式

绑定是指将“目标”的依赖性属性绑定到“源”的CLR属性

BindingExpression是维持绑定源与绑定目标之间连接的基础对象,一个Binding实例中可包含多个BindingExpression实例

9.1.2 绑定模式(Mode属性)

1、OneWay:单向绑定

特点:当源发生变化时目标也自动变化,适用于绑定的控件为隐式只读控件的情况(如学号),或者目标属性没有用于进行更改的控件接口的情况(如表的背景色)

 <TextBlockText="{Binding ElementName=listBox1,Path=SelectedItem.Content, Mode=OneWay}"/>

2、TwoWay:双向绑定

特点:当源或目标有一方发生变化时,另一方也自动变化,适用于可编辑或交互式的UI方案

 <TextBox Text="{Binding ElementName=listBox2,Path=SelectedItem.Content,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />

3、OneTime:单次绑定

特点:当应用程序启动数据上下文(DataContext)发生更改时才更新目标,此后源的变化不再影响目标,适用于绑定静态的数据,它实质上是OneWay绑定的简化形式

 <TextBox Text="{Binding ElementName=listBox3, Path=SelectedItem.Content,Mode=OneTime}" />

4、OneWayToSource:反向绑定

特点:当目标发生变化时源也跟着变化,这种方式与OneWay绑定刚好相反

<TextBox Text="{Binding ElementName=listBox4, Path=SelectedItem.Content,Mode=OneWayToSource,UpdateSourceTrigger=PropertyChanged}" />

5、Default:自动获取目标属性的默认Mode值

如果不声明绑定模式,默认为Default,般情况下,可编辑控件属性(如文本框和复选框的属性)默认为双向绑定,而多数其他属性默认为单向绑定

 <TextBox Text="{Binding ElementName=listBox2,Path=SelectedItem.Content,Mode=Default,UpdateSourceTrigger=LostFocus}" />

9.1.3 控制更新源的时间(UpdateSourceTrigger)

  • Explicit:用C#代码调用BindingExpression的UpdateSource方法时才更新源

  • LostFocus:当目标控件失去焦点时自动更新源

  • PropertyChanged:目标控件的绑定属性每次发生更改时都会自动更新源

<TextBox Text="{Binding ElementName=listBox2,Path=SelectedItem.Content,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />

9.1.4 绑定路径语法(Path属性)

(1)Path的值为源对象的属性名(常用,本章例子)
(2)Path值的其他情况:

​ (a)当绑定到附加属性时,需要用圆括号将其括起来
​ (b)用方括号指定属性索引器,还可以使用嵌套的索引器。
​ (c)在索引器内部,可以使用多个由逗号分隔的索引器参数,还可以使用圆括号指定每个参数的类型
​ (d)如果源为集合视图,则可以用斜杠(/)指定当前项
​ (e)可以使用点(.)路径绑定到当前源

9.1.5 数据转换

用XAML描述数据绑定时,WPF提供的类型转换器能将一些类型的值转换为字符串表示形式。但在有些情况下,可能需要开发人员自定义转换器

例如,当绑定的源对象是类型为DateTime的属性,在这种情况下,为了使绑定正常工作,需要先将该属性值转换为自定义的字符串表示形式

要将转换器与绑定关联,一般先创建一个实现IValueConverter接口的类,然后实现两个方法:Convert方法和ConvertBack方法

9.2 简单数据绑定

9.2.1 在单个属性中直接指定绑定源

ElementName:源是另一个WPF元素

<Slider Name="slide1" Width="100" Maximum="100" />
<Rectangle Width="{Binding ElementName=slide1,Path=Value}" Height="15" Fill="Red" />

Souce:源是一个CLR对象

<Page …… xmlns:src="clr-namespace:ch11.Examples">
<TextBlock Text="{Binding XueHao,Source={StaticResource info}}" />

用Source绑定到CLR对象

Binding类的Source属性表示绑定的数据源为CLR对象,该CLR对象既可以是.NET框架提供的类的实例,也可以是自定义类的实例

用RelativeSource绑定相对目标

RelativeSource:源和目标是同一个元素

RelativeSource表示“源”是自身。当将对象的某个属性绑定到它自身的另一个属性,或者在样式(Style)或模板(ControlTemplate)中使用数据绑定时,RelativeSource属性很有用

<Rectangle Width="100"Height="{Binding RelativeSource={RelativeSource Self},Path=Width}" />

9.2.2 通过DataContext将多个属性绑定到相同的源

(1)只需要在父元素上用DataContext声明一次
(2)每个子元素的“Bingding Path=…”都可以省略为: “Bingding …”

第10章 数据库与实体数据模型

10.1 创建数据库和表

10.1.1 ADO.NET数据访问技术

1、利用DataSet访问数据库

这是ADO.NET刚推出时提供的技术,用于在断开连接方式下对数据进行处理,该技术将驻留在本机内存中的DataSet作为中间层,即应用程序和DataSet进行交互,DataSet再和数据库进行交互

2、利用LINQ to DataSet访问数据库

采用这种方式时,应用程序可以使用LINQ语法访问DataSet,用法比第一种方式更灵活,也更简单

3、利用LINQ to SQL访问数据库

该方式直接和SQL Server数据库进行交互,执行效率高,速度快,但这种方式不支持其他类型的数据库,在LINQ to SQL中,先利用O/R设计器构建模型,再利用该模型传递SQL语句,执行SQL命令,也可以用LINQ语法直接访问SQL Server

使用这种技术时,一般用它设计自定义的中间层对象模型(中间件),然后将其做成.dll文件供其他应用程序调用

4、利用EF和LINQ to Entities访问数据库(推荐方式)

这是建议的数据库访问方式,利用该模型可支持多种类型的数据库(包括SQL Server、Oracle、DB2、MySQL等),而且可由数据库供应商直接提供该模型的数据库访问引擎

10.1.2 SQL Server 2014简介

SQL Server 2014数据库引擎的主要特点

(1)提供了针对操作系统升级的AlwaysOn可用性组的跨群集迁移
(2)针对可编程性的增强功能
(3)针对可扩展性和性能的增强功能
(4)提供了对云计算和大数据的支持

10.1.3 创建LocalDB数据库

LocalDB简介:基于服务的数据库,但只能通过本机访问

优点:用法简单,而且将项目和数据库从一台计算机复制到另一台计算机上时,不需要做任何修改

通过应用程序访问LocalDB数据库时,VS2015会自动将该.mdf文件附加到LocalDB的默认实例中,当不再使用数据库时,LocalDB便将.mdf文件从默认实例自动分离出来

在VS中直接创建数据库的基本用法

方法一:选择【基于服务的数据库】直接创建数据库(MyDb.mdf)

方法二

(1)选择【ADO.NET实体数据模型】

(2)选择【来自数据库的Code First】

10.2 利用实体框架创建实体数据模型

10.2.1 实体框架基本概念

实体框架的优点:

(1)应用程序可通过概念模型(包括具有继承性、复杂成员和关系的类型)来工作
(2)应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性
(3)可以在不更改应用程序代码的情况下更改概念模型与特定于存储的架构之间的映射
(4)开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型
(5)多个概念模型可以映射到同一个存储架构

10.2.2 实体框架开发模式

1、数据库优先(Database First)

先创建数据库,然后再根据数据库手工生成对应的实体数据模型(.edmx文件),数据库结构变了,模型必须手工再生成一遍

2、模型优先(Model First)

先利用开发工具提供的模板创建实体数据模型(.edmx文件),然后再根据实体数据模型生成数据库

3、代码优先(Code First,建议的技术)

【实际】先编写数据模型类,然后再据此生成数据库

【参考】先创建数据库,然后生成实体数据模型类,这种办法仅用于生成参考的代码

如果文章对您有帮助,记得一键三连支持一下哦~

C#基础知识回顾(第四部分 共四部分)相关推荐

  1. 计算机基础知识及答案2020,2020年事业单位招聘考试计算机基础知识复习题库及答案(共931题)...

    2020年事业单位招聘考试计算机基础知识复习题库 及答案(共931题) 1. 世界上首先实现存储程序的电子数字计算机是____. A.ENIAC B.UNIVAC C.EDVAC D.EDSAC 2. ...

  2. 【Java基础知识回顾篇】之打怪升级Day001

    Java基础知识回顾篇之打怪升级Day001 目录 Java基础知识回顾篇之打怪升级Day001 简介 一.为什么现在主流的是Java8和Java11? 二.简单尝试编写java程序 1.编写一个He ...

  3. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  4. php基础知识总结大全,php基础知识回顾 —— 常量

    您现在的位置是:网站首页>>PHP>>php php基础知识回顾 -- 常量 发布时间:2019-01-23 17:23:08作者:wangjian浏览量:489点赞量:0 在 ...

  5. java知识点博客园_JAVA基础知识回顾

    JAVA基础知识回顾 一.背景介绍 JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版) JavaEE(J2EE)(Java 2 Platfo ...

  6. C语言基础知识回顾 2-三种基本机构

    C语言基础知识回顾 %超适用于计算机二级% 第二章 三种基本结构 本章回顾最基本的顺序.条件.循环语句的语法结构,对于非初学者来说,这一部分内容想必早就信手拈来. 因此,回顾的侧重点都是一些需要注意的 ...

  7. 免费计算机操作基础知识ppt,计算机基础知识:PPT常用操作(四)

    [导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考! 一.PPT编辑放映两不误 按住Ctrl ...

  8. 计算机word基础知识ppt,计算机基础知识:PPT常用操作(四)

    [导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考! 一.PPT编辑放映两不误 按住Ctrl ...

  9. Java基础知识回顾之一 ----- 基本数据类型

    前言 在开始工作至今,学习各种各样的技术之中发现自己的很多Java的基础知识都忘了⊙﹏⊙b汗... 而且越是学习越是发现Java基础的重要性,所以准备单独抽一下时间进行Java基础的重新学习.在重新学 ...

  10. 前端开发入门:html和css基础知识回顾2

    HTML+CSS基础知识 1.对WEB标准以及W3C的理解与认识 标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被 ...

最新文章

  1. linux 批量启动服务器,批量部署Linux操作系统systemimager 使用
  2. NuGet的本地服务器安装与Package的发布(呕吐)
  3. Keil uvision 5 MDK 安装教程
  4. Solaris 10装置jdk1.6及改削成默许JDK
  5. python几种排序_Python实现几种排序算法
  6. gentoo linux 内核,Gentoo编译内核
  7. 串口监听器使用说明书
  8. c 语言rand()生成随机数
  9. 全基因组选择中准确性的影响因素
  10. 透明壁纸android,主题透明壁纸软件下载-主题透明壁纸 安卓版v1.0-PC6安卓网
  11. python安装第三方包的几种方式
  12. React有哪些性能优化的手段?
  13. 【seo】网页开发 代码优化 3
  14. Tomcat启动异常 Failed to read candidate component class 解决办法
  15. python 打开文件夹_python打开目录
  16. ERP 淡出历史舞台,DDD 才是 yyds!
  17. x-lite或者eyeBeam拨号计划
  18. oracle时间格式设为英文,如何在Oracle开启时自动设置时间格式?
  19. 项目开发计划书_100个知识点—商业计划书
  20. 摘录与评论·《致我们终将逝去的青春》

热门文章

  1. PCB上开窗 去掉绿油 把铜皮裸露,无脑教程
  2. [祭祖作业一]二进制炸弹破解笔记2
  3. nginx 10054报错问题解决方案
  4. Drill中配置MySQL
  5. Vova and Trophies-思维
  6. vb屏幕分辨率设置和获取_hawkol_新浪博客
  7. 现在什么挣钱快?你能看懂多少,就能挣多少钱!
  8. 华为云MVP马超:云原生时代开发者的挑战与出路
  9. 华为MA5616 -- ADSL配置指导
  10. c语言大小写字母转换if,C语言实现 对文件中大小写字母的转换