第11章数据绑定与数据验证.ppt_第1页
第11章数据绑定与数据验证.ppt_第2页
第11章数据绑定与数据验证.ppt_第3页
第11章数据绑定与数据验证.ppt_第4页
第11章数据绑定与数据验证.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、教育部普通高等教育十二五国家级规划教材C#程序设计教程第3版第11章 数据绑定与数据验证,2,Ch11 数据绑定与数据验证,11.1 数据绑定 11.2 数据验证,3,11.1 数据绑定,11.1.1 数据绑定基本概念 11.1.2 简单数据绑定 11.1.3 数据模板化 11.1.4 通过数据模板和视图绑定到集合,11.1 数据绑定,数据绑定是应用程序中UI与UI以及UI与CLR对象之间建立连接的过程。 WPF提供了三种数据绑定技术: Binding MultiBinding PriorityBinding。 这三种Binding的基类都是BindingBase,而BindingBase又继

2、承于MarkupExtension。,4,11.1.1 数据绑定基本概念,在System.Windows.Data命名空间下,WPF提供了一个Binding类,利用该类可将目标的附加属性与数据源的值绑定在一起。数据源可以是任何修饰符为public的属性,包括控件属性、数据库、XML或者CLR对象的属性等。 绑定语法: 格式中的object为绑定目标,一般为WPF元素;property为目标属性;declaration为绑定声明。 绑定声明可以有零个或多个,如果有声明,每个声明一般都以“绑定属性=值”的形式来表示,绑定属性是指Binding类提供的各种属性,值是指数据源。如果有多个声明,各声明之

3、间用逗号分隔。,5,11.1.1 数据绑定基本概念,数据绑定举例 : 这里的ElementName=slide1表示绑定的元素名为slide1,Path=Value表示绑定到slide1控件的Value属性值。 这样一来,当拖动Slide控件的滑动条时,TextBlock的Text属性值也会自动更改。 此绑定中的绑定目标对象为TextBlock、源目标为Slider,6,11.1.1 数据绑定基本概念,Binding类提供的常用属性及其含义,7,11.1.1 数据绑定基本概念,1绑定和绑定表达式(Binding、BindingExpression) BindingExpression是维持绑定

4、源与绑定目标之间连接的基础对象。一个Binding实例中可包含多个BindingExpression实例. 多个属性共享同一个Binding对象的方法: Binding b1 = new Binding() ElementName = slide1.Name, Path = new PropertyPath(Slider.ValueProperty), StringFormat= 0:#0%“ ; BindingOperations.SetBinding(r1, Rectangle.WidthProperty, b1); BindingOperations.SetBinding(t1, Tex

5、tBlock.TextProperty, b1);,8,11.1.1 数据绑定基本概念,2绑定模式(Mode属性) OneWay:单向绑定。 当源发生变化时目标也自动变化。 这种模式适用于绑定的控件为隐式只读控件的情况(如学号),或者目标属性没有用于进行更改的控件接口的情况(如表的背景色)。 TwoWay:双向绑定。 当源或目标有一方发生变化时,另一方也自动变化。 这种绑定模式适用于可编辑或交互式的UI方案。,9,11.1.1 数据绑定基本概念,2绑定模式(Mode属性) OneTime:单次绑定。 当应用程序启动或数据上下文(DataContext)发生更改时才更新目标,此后源的变化不再影响

6、目标。 这种绑定模式适用于绑定静态的数据,它实质上是OneWay绑定的简化形式。 OneWayToSource:反向绑定 当目标发生变化时源也跟着变化,这种方式与OneWay绑定刚好相反。,10,11.1.1 数据绑定基本概念,2绑定模式(Mode属性) Default:如果不声明绑定模式,默认为Default,该方式自动获取目标属性的默认Mode值。 如果不声明绑定模式,默认为Default,该方式自动获取目标属性的默认Mode值。 一般情况下,可编辑控件属性(如文本框和复选框的属性)默认为双向绑定,而多数其他属性默认为单向绑定。,11,数据绑定举例, 注意: 双向绑定和OneWayToSo

7、urce需要侦听目标属性的更改,需要设置UpdateSourceTrigger属性的值。,2020年7月31日星期五,12,11.1.1 数据绑定基本概念,3控制更新源的时间(UpdateSourceTrigger) Explicit:用C#代码调用BindingExpression的UpdateSource方法时才更新源。 LostFocus:当目标控件失去焦点时自动更新源。 PropertyChanged:目标控件的绑定属性每次发生更改时都会自动更新源。,13,11.1.1 数据绑定基本概念,4绑定路径语法(Path属性) (1)Path的值为源对象的属性名 例如:path=“Text”

8、(2)当绑定到附加属性时,需要用圆括号将其括起来 例如:Path=(DockPanel.Dock) (3)用方括号指定属性索引器,还可以使用嵌套的索引器。 (4)在索引器内部,可以使用多个由逗号分隔的索引器参数,还可以使用圆括号指定每个参数的类型 (5)如果源为集合视图,则可以用斜杠(/)指定当前项 (6)可以使用点(.)路径绑定到当前源。,14,11.1.1 数据绑定基本概念,5数据转换 用XAML来描述数据绑定时,WPF提供的类型转换器能将一些类型的值转换为字符串表示形式。但在有些情况下,可能还需要开发人员自定义转换器。 例如当绑定的源对象是类型为DateTime的属性,在这种情况下,为了

9、使绑定正常工作,需要先将该属性值转换为自定义的字符串表示形式。 要将转换器与绑定关联,一般先创建一个实现IValueConverter接口的类,然后实现两个方法:Convert方法和ConvertBack方法。,15,11.1.1 数据绑定基本概念,1.将日期类型转换为字符串 ValueConversion(typeof(DateTime), typeof(string) public class DateConverter : IValueConverter public object Convert(object value, Type targetType, object paramet

10、er, System.Globalization.CultureInfo culture) public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) ,2020年7月31日星期五,16,11.1.1 数据绑定基本概念,2. 在XAML页面中使用转换器 ,2020年7月31日星期五,17,11.1.2 简单数据绑定,1在单个属性中直接指定绑定源 ElementName:源是另一个WPF元素。 例如: Souce:源是一个C

11、LR对象。 绑定源对象为CLR对象(系统使用的类或自定义类) RelativeSource:源和目标是同一个元素。,18,11.1.2 简单数据绑定,实现方法1:用ElementName绑定到其他控件 Binding类的ElementName属性用于指明数据源来自哪个元素。 【例11-1】演示Binding类ElementName属性的基本用法,19,11.1.2 简单数据绑定,实现方法2:用Source绑定到CLR对象 Binding类的Source属性表示绑定的数据源为CLR对象。该CLR对象既可以是.NET框架提供的类的实例,也可以是自定义类的实例 【例11-2】演示Binding类So

12、urce属性的基本用法。,20,11.1.2 简单数据绑定,实现方法3:用RelativeSource绑定相对目标 RelativeSource表示数据源是相对于绑定目标而言的,该属性的默认值为null。当将对象的某个属性绑定到它自身的另一个属性,或者在样式(Style)或模板(ControlTemplate)中使用数据绑定时,RelativeSource属性很有用。 取值:self(最常用)、TemplateParent、PreviousData、FindAncestor 例如: 此效果是保持是一个正方形,21,11.1.2 简单数据绑定,【例11-3】演示Binding类RelativeS

13、ource属性的基本用法,22,11.1.2 简单数据绑定,2通过DataContext将多个属性绑定到相同的源 【例11-4】演示利用DataContext实现数据绑定的基本用法,23,11.1.2 简单数据绑定,2通过DataContext将多个属性绑定到相同的源 ,2020年7月31日星期五,24,11.1.2 简单数据绑定,3利用绑定实现数据源的属性更改通知 利用OneWay或TwoWay绑定模式来实现,这两种模式都要求源对象必须实现INotifyPropertyChanged接口。以便让绑定目标的属性自动反映绑定源属性的动态更改。 要在类中实现INotifyPropertyChang

14、ed接口,需要声明一个PropertyChanged事件,并创建OnPropertyChanged方法引发该事件 【例11-5】演示如何利用绑定实现数据源的属性更改通知,25,11.1.3 数据模板化,1利用ObservableCollection类实现集合 ObservableCollection类是公开INotifyCollectionChanged接口的数据集合的内置实现。将目标控件绑定到集合时,应该优先考虑用ObservableCollection来实现. ObservableCollection添加或移除项时不需要重新生成整个列表,所以运行效率高、速度很快. 2用内联式定义DataT

15、emplate 设置控件的ItemTemplate属性。 更为常见的是在资源中定义数据模板,然后在多处重用该模板。,26,11.1.3 数据模板化,3将DataTemplate创建为资源 如果希望复用某个数据模板,一般将其定义为XAML资源。这样一来,凡是引用该模板的控件都可以利用它显示绑定的数据。 定义数据模板后,就可以用ItemsSource进行数据绑定,并用Itemtemplate指定使用的数据模板。 4在DataTemplate中使用触发器 DataTrigger用于根据某个源属性的值自动触发显示的外观。可以用该触发器的Setter来设置目标属性值,或者用EnterActions、Ex

16、itActions属性来设置绑定属性的值,实现动画等操作。 另外,还可以用MultiDataTrigger类更改多个数据绑定属性值。,27,11.1.3 数据模板化,【例11-6】演示数据模板化的基本用法,28,11.1.4 通过数据模板和视图绑定到集合,1绑定到默认集合视图 2绑定到自定义集合视图 【例11-7】演示如何绑定到自定义的集合视图,以及如何实现主-从绑定方案,29,11.2 数据验证,11.2.1 数据验证的基本概念 11.2.2 利用验证规则和绑定模型实现验证,30,11.2.1 数据验证的基本概念,WPF中数据验证实现通常是将数据绑定与验证规则关联在一起。 内置的验证规则和自

17、定义验证规则 1ValidationRule类 所有验证规则的基类。 常用属性和方法: (1)ValidatesOnTargetUpdated属性 该属性获取或设置更新绑定目标时是否执行验证规则,如果是则为true,否则为false。 (2)ValidationStep属性 该属性获取或设置什么时候执行验证规则。 (3)Validate方法 扩充类要实现的方法。,31,11.2.1 数据验证的基本概念,2内置的ExceptionValidationRule验证规则 用ExceptionValidationRule类来实现的。 该规则检查在“绑定源属性”的更新过程中引发的异常。 3内置的Data

18、ErrorValidationRule验证规则 用DataErrorValidationRule类来实现的。 该规则检查由实现IDataErrorInfo接口的对象所引发的错误(包括默认的转换器产生的异常)。 4.自定义验证规则类 自定义从ValidationRule类派生的类,并实现Validate方法创建自定义验证规则。,32,11.2.1 数据验证的基本概念,5Binding类提供的与数据验证有关的常用属性 (1)ValidatesOnExceptions属性 该属性获取或设置是否包含ExceptionValidationRule。若包含则为true,否则为false。 (2)Valid

19、atesOnDataErrors属性 该属性获取或设置是否包含DataErrorValidationRule,若包含则为true,否则为false。 (3)UpdateSourceTrigger属性 (4)ValidationRules属性 获取或检查用户输入有效性的规则集合。,33,11.2.2 利用验证规则和绑定模型实现验证,WPF中验证首选实现方式:自定义验证规则。 1利用自定义验证规则实现验证 实现步骤: 第一步:自定义类从ValidationRule类派生,并实现Validate方法 第二步:在WPF中添加命名空间引用。 第三步:在Binding.ValidationRules属性中引用验证规则 注意:字符串验证时,要将VlidationsOnTargetUpdated属性设置为true。,34,11.2.2 利用验证规则和绑定模型实现验证,【例11-8】演示演示自定义验证规则的基本用法。,2020年7月31日星期五,35,11.2.2 利用验证规则和绑定模型实现验证,2利用内置的ExceptionValidationRule实现验证 在验证时同时使用内置的E

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论