第四章 现代交换技术.ppt

上传人:bao****ty 文档编号:143804986 上传时间:2020-09-02 格式:PPT 页数:44 大小:1.20MB
返回 下载 相关 举报
第四章 现代交换技术.ppt_第1页
第1页 / 共44页
第四章 现代交换技术.ppt_第2页
第2页 / 共44页
第四章 现代交换技术.ppt_第3页
第3页 / 共44页
第四章 现代交换技术.ppt_第4页
第4页 / 共44页
第四章 现代交换技术.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《第四章 现代交换技术.ppt》由会员分享,可在线阅读,更多相关《第四章 现代交换技术.ppt(44页珍藏版)》请在金锄头文库上搜索。

1、,项目五 WPF绑定注册信息入库程序,讲师 刘振东,本章导读:,本章的主要内容是WPF的数据绑定和数据验证的相关知识。然后通过项目“注册信息入库程序”为导向,四个任务(创建一个简单Binding程序、显示自定义颜色程序、注册用户的信息查询、注册信息入库)为驱动,学习有关WPF绑定的知识,特别是绑定到CLR对象、使用集合对象作为列表控件的ItemsSource,本项目着力使学习者对WPF的Binding有一定认识,初步掌握数据绑定的用法。,项目五 WPF绑定注册信息入库程序任务二 创建显示自定义颜色的程序,一、任务描述:,通过移动4个Slider滑块,改变颜色块中颜色。随着每个滑块的移动,颜色也

2、随着变化。运行效果如图所示。,二、知识准备:, http:/www.xunchi- http:/www.51xiu.org/ http:/www.gz- ,二、知识准备:,1、Binding的路径(Path),做为Binding的源可能会有很多属性,通过这些属性Binding源可以把数据暴露给外界。那么,Binding到底需要关注哪个属性值呢?就需要用Binding的Path属性来指定了。 尽管在XAML代码中或者Binding类的构造器参数列表中我们使用字符串来表示Path,但Path的实际类型是PropertyPath。,二、知识准备:,例如,想让一个TextBlock控件的Backgro

3、und显示List的的选定项。点击列表框的不同项,在TextBlock上显示相应字符串,背景色显示成对应颜色。,1、Binding的路径(Path),二、知识准备:, ,1、Binding的路径(Path),二、知识准备:, ,1、Binding的路径(Path),对应TextBlock的数据绑定,采用第1种绑定方式可以这样写:,也可以用第2种绑定方式,这样写:,二、知识准备:,1、Binding的路径(Path),Binding还支持多级路径,例如想让一个TextBox显示另外一个TextBox内容的长度,如右图。, http:/www.xunchi- http:/www.51xiu.org

4、/ http:/www.gz- ,二、知识准备:, ,1、Binding的路径(Path),等效的C#代码是:,this.textBox2.SetBinding(TextBox.TextProperty, new Binding(Text.Length) Source = textBox1, Mode= BindingMode.OneWay );,二、知识准备:,1、Binding的路径(Path),例如我们想让一个TextBox显示另外一个TextBox的第4个字符,如下图。,二、知识准备:, ,1、Binding的路径(Path),等效的C#代码是:,this.textBox2.SetBi

5、nding(TextBox.TextProperty, new Binding(Text.3) Source=textBox1,Mode= BindingMode.OneWay);,二、知识准备:,2、用Source绑定到CLR对象,Binding类的ElementName属性表示绑定到WPF元素,而Source属性表示绑定的数据源为CLR对象。CLR对象,即非元素对象。既可以是.NET框架提供的类的实例,也可以是自定义类的实例。,二、知识准备:, Calibri ,(1).NET框架提供的类的实例,即系统自带的类的实例。例如:,在TextBlock控件中使用该字体,即绑定到该资源上。代码如下

6、:,2、用Source绑定到CLR对象,二、知识准备:,2、用Source绑定到CLR对象,(2)Binding类的Source属性,绑定到自定义类的实例。 先创建一个Person的类,作为数据源用。,class Student public string Name get ; set ; public string Sex get ; set ; ,二、知识准备:,2、用Source绑定到CLR对象,该类的对象通过Name、Sex属性将数据暴露给UI上的元素。设计WPF外观如下:, http:/www.xunchi- http:/www.51xiu.org/ http:/www.gz- ,二

7、、知识准备:,2、用Source绑定到CLR对象,外观布局的主要代码如下:, ,二、知识准备:,2、用Source绑定到CLR对象,创建Student的一个实例,使用Binding把数据源和UI元素连接起来。将对象2个属性分别绑定在2个TextBox控件的Text属性上。,InitializeComponent(); Student stu = new Student(); stu.Name = 郑佳; stu.Sex = 女;,二、知识准备:,2、用Source绑定到CLR对象,Binding bind1 = new Binding(); bind1.Source = stu; bind1.

8、Path = new PropertyPath(Name); BindingOperations.SetBinding(this.textBox1, TextBox.TextProperty, bind1); Binding bind2 = new Binding(); bind2.Source = stu; bind2.Path = new PropertyPath(Sex); BindingOperations.SetBinding(this.textBox2, TextBox.TextProperty, bind2);,二、知识准备:,2、用Source绑定到CLR对象,BindingO

9、perations是个值得注意的类,它调用静态方法SetBinding()方法实现绑定。 BindingOperations.SetBinding(): 第1个参数用于指定Binding的目标 第2个参数用于为Binding指明把数据送达目标的哪个属性。是类的一个静态只读属性DependencyProperty类型成员。 第3个参数,指定使用哪个Binding实例将数据源与目标关联起来。,二、知识准备:,2、用Source绑定到CLR对象,运行效果如下:, http:/www.xunchi- http:/www.51xiu.org/ http:/www.gz- ,二、知识准备:,2、用Sour

10、ce绑定到CLR对象,如果让作为Binding源的对象具有自动通知Binding属性值已经变化的能力,就需要让类实现INotifyPropertyChanged接口,并在属性的set语句中激发PropertyChanged事件。 Binding是一种自动机制,当值变化后属性要有能力通知Binding,让Binding把变化传达给UI元素。当实现了INotifyPropertyChanged接口的对象有所改变时,会激发OnPropertyChanged这个接口方法,该方法保证了UI界面的数据同步。,二、知识准备:,2、用Source绑定到CLR对象,我们需要在对象的属性里set语句中激发一个Pr

11、opertyChanged事件。修改Student类让其实现System.ComponentModel名称空间下的INotifyPropertyChanged接口即可。,class Student : INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; /类的具体实现 ,二、知识准备:,2、用Source绑定到CLR对象,/类的具体实现 private string name=郑佳; public string Name get return name; set name = valu

12、e; if (this.PropertyChanged != null) this.PropertyChanged.Invoke(this,new PropertyChangedEventArgs(Name); ,二、知识准备:,2、用Source绑定到CLR对象,如上代码即指当Name发生变化时通知UI元素更新。使用Binding把数据源和UI元素连接起来。将对象的Name属性绑定在第2个TextBox控件的Text属性上。,InitializeComponent(); Binding bind1 = new Binding(); bind1.Source = stu; bind1.Path

13、 = new PropertyPath(Name); BindingOperations.SetBinding(this.textBox2, TextBox.TextProperty, bind1);,二、知识准备:,2、用Source绑定到CLR对象,在textBox1中输入新的姓名,点击按钮对Student对象的Name属性进行修改。给Button添加了Click事件。,private void btn1_Click(object sender, RoutedEventArgs e) stu.Name = textBox1.Text.Trim(); , http:/www.xunchi-

14、http:/www.51xiu.org/ http:/www.gz- ,二、知识准备:,2、用Source绑定到CLR对象,二、知识准备:,3、使用Binding的RelativeSource,有些时候我们不能确定作为Source的对象叫什么名字,但知道它与作为Binding目标的对象在UI布局上有相对关系,比如控件自己关联自己的某个数据、关联自己某级容器的数据。这个时候我们就要使用Binding的RelativeSource属性。,为了设置Binding.RelativeSource属性,需要使用RelativeSource对象。这样就需要除了创建一个Binding对象之外,还需要在其中创建

15、一个嵌套的RelativeSource对象。,二、知识准备:,3、使用Binding的RelativeSource,为TextBlock.Text属性创建一个Binding对象,这个Binding对象使用了一个查找父窗口并显示窗口标题的RelativeSource对象。, ,二、知识准备:,3、使用Binding的RelativeSource,RelativeSource对象使用FindAncestor模式,该模式告知查找元素树直到发现AncestorType属性定义的元素类型。 编写绑定更常用的方法就是使用Binding和RelativeSource标记扩展,将其合并到一个字符串中。,二、知识准备:,3、使用Binding的RelativeSource,运行效果如图所示。,二、知识准备:,3、使用Binding的RelativeSource,我们也可以在后台以C#代码实现:,InitializeComponent(); RelativeSource rsTemp = new RelativeSource(RelativeSourceMode.FindAncestor); rsTemp.AncestorType=typeof(Window); Binding bind = ne

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号