高级编程第6版 高级WPF

文章描述:-2022年2月19日发(作者:权限控制)第35章高 级 WPF44 上一章介绍了WPF的一些核心功能,本章继续用WPF编程,介绍创建完整应用程序的一些重要方面,例如数据绑定和命令处理,还要探讨动画和3D编程。 本章的主要内容如下: ● 数据绑定 ● 命令 ● 动画 ● 3D ● Windows Forms集成 35.1 数据绑定 上一章在给列表框设置样式时,介绍了数据绑定的几个特性。当然,数据

-

高级编程第6版 高级WPF 2022年2月19日发(作者:权限控制)


第35章高 级 WPF44
上一章介绍了WPF的一些核心功能,本章继续用WPF编程,介绍创建完整应用程序的一些重要
方面,例如数据绑定和命令处理,还要探讨动画和3D编程。
本章的主要内容如下:
● 数据绑定
● 命令
● 动画
● 3D
● Windows Forms集成
35.1 数据绑定
上一章在给列表框设置样式时,介绍了数据绑定的几个特性。当然,数据绑定还有许多特性。
WPF数据绑定与Windows Forms 数据绑定相比,进了一大步。本节介绍WPF中的数据绑定,讨论
如下主题:
● 概述
● 用XAML绑定
● 简单的对象绑定
● 对象数据提供程序
● 列表绑定
● 绑定到XML上
35.1.1 概述
在WPF数据绑定中,目标可以是WPF元素的任意依赖属性,CLR对象的每个属性都可以是绑
定源。WPF元素实现为.ET类,所以每个WPF元素都可以用作绑定源。图35-1显示了绑定源和绑
定目标之间的连接。Binding对象定义了该连接。
Binding对象支持源与目标之间的几种绑定模式。绑定可以是单向的,即源信息传送给目标,但
如果用户在用户界面上修改了该信息,源不会更新。要更新源,需要双向绑定。

图 35-1


表35-1列出了绑定模式及其要求。
表 35-1
绑 定 模 式
一次性
说 明
绑定从源指向目标,且仅在应用程序启动时,或数据内容改变时绑定一次。通过这种
模式可以获得数据的快照
单向 绑定从源指向目标。可以用于只读数据,因为它不能在用户界面上修改数据。要更新
用户界面,源必须实现接口IotifyPropertyChanged
双向 在双向绑定中,用户可以在UI上修改数据。绑定是双向的—— 从源指向目标,从目
标指向源。源对象需要实现读写属性,才能把改动的内容从UI更新到源对象上
指向源的
单向
采用这种绑定模式,如果目标属性改变了,源对象也会更新
35.1.2 用XAML绑定
WPF元素不仅是数据绑定的目标,还是绑定的源。可以把一个WPF元素的源属性绑定到另一个
WPF元素的目标属性上。
下面的例子使用前面创建的笑脸,它是用WPF图形创建的,然后将其绑定到一个滑块上,以便
在窗口中移动它。滑块是源元素,其名称是slider。属性Value给出了滑块的位置值。数据绑定的目
标是内部的Canvas元素。这个Canvas元素的名称是FunnyFace,包含了绘制笑脸所需的所有图形。
该Canvas元素包含在外部的Canvas元素中,所以可以设置关联的属性,在外部的Canvas元素中定
位内部的Canvas元素。关联属性设置为Binding标记扩展。在Binding标记扩展中,
Elementame设置为slider,以引用WPF滑块元素,Path设置为Value,从Value属性中获取值。
xmlns=http:fx2006xamlpresentation
xmlns:x=http:fx2006xaml
Title=

=
ame=
Stroke=
Stroke=
Fill=
Data=
StrokeThickness=
StrokeThickness=


StrokeThickness=
StrokeThickness=


Maximum=


运行应用程序时,可以移动滑块,笑脸就会移动,如图35-2和35-3所示。

图 35-2

图 35-3
除了用XAML代码定义绑定信息之外,如这个例子使用Binding元数据扩展来定义,还可以使用
后台代码。绑定的XAML版本如下:
=
ame=
在后台代码中,必须创建一个新的Binding对象,设置Path和Source属性。Source属性必须设
置为源对象,这里是WPF对象slider。Path属性设置为一个PropertyPath实例,它用源对象的Value
属性名初始化。对于目标,可以调用SetBinding()方法来定义绑定。这里,目标是名为FunnyFace的
Canvas对象。SetBinding()方法需要两个参数,第一个参数是一个依赖属性,第二个参数是绑定对象。
属性应是绑定的,这样DependencyProperty类型的依赖属性才能用operty字
段访问:
Binding binding = new Binding();
= new PropertyPath(
= slider;

-

高级编程第6版 高级WPF

发布时间:2022-02-19 01:11:11
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 12 条评论,495人围观)

最近发表

随便看看

热门文章

标签列表