




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 27 章WPF 框架WPF 是 Windows Presentation Foundation 的缩写,它是微软公司发布的下一代显示系统框架,通过其强大的展现功能,使得用户体验更加丰富。基于 WPF 框架,开发人员可以创建强大的独立应用程序和基于浏览器的网页应用程序。 27.1 WPF 概述 WPF 提供了展现系统的架构,它的核心是提供了一个与分辨率无关并且基于向量的呈现引擎。由于该框架内置了很多功能强大的应用程序开发组件,使 WPF 在利用现代图形硬件的优势方面更加明显。这些组件包括可扩展应用程序标记语言(XAML)、控件、数据绑定、布局、图形、动画、样式、模板、文档、媒体、文本和版式等
2、。 27.1.1 WPF 基础架构WPF 的基础架构是在原有的统一运行时(CLR)基础上,经过进一步的优化和补充实现了强大的展现功能,同时它也不局限于托管代码,通过与硬件加速的完美结合,实现了高效的硬件和软件呈现。WPF 的基础架构如图 27.1所示。 图中,深色部分的模块是 WPF 的主要代码模块。在这些模块中,只有 Milcore 属于非托管组件,之所以使用非托管代码实现,目的是实现与 DirectX 的紧密集成。WPF 中的所有显示是通过 DirectX 引擎完成的, 可实现高效的硬件和软件呈现。WPF 还要求对 内存和执行进行精确控制,Milcore 中的组合引擎受性能影响较大,需要放
3、弃 CLR 的许多优点来提高性 图 27.1 WPF 基础架构 能。图中的浅色部分为.NET 框架本身提供的组件,用于配合 WPF 完成其展现功能。 WPF 旨在创建动态的数据驱动演示系统。系统的每一部分均可通过驱动行为的属性集来创建对象。数据绑定是系统的基础部分,在每一层中均进行了集成。传统的应用程序先创建一个显示内容,然后绑定到某些数据。在 WPF 中,关于控件的所有内容、显示内容的所有方面都是由某种类型的数据绑定生成的。通过在按钮内部创建复合控件并将其显示绑定到按钮的内容属性,就会显示按钮内的文本。 第 27 章 WPF 框架 27.1.2 WPF 相关技术WPF 是一个展现系统的框架总
4、称,其架构下包含了很多具体的实现技术,这些技术包括以下几方面。 q XAML 语言:XAML 语言是一种基于 XML 的标记语言,用于以声明的方式实现应用程序的外观。它通常用于创建窗口、对话框、页面和用户控件,并用控件、形状和图形填充它们。 q 控件:WPF 控件是实现界面展现的基础元素,其适用于窗口程序或者页面程序承载。通过各种控件的组合,来实现与用户交互的用户展现窗口。事实上,控件是一组组封装好的并且用于实现某些行为的 WPF 类。WPF 控件分为如下几个大类, 分别是按钮、输入、菜单、布局、对话框、选择、数字墨迹、文档、媒体、导航、用户信息控件等。 q 布局:WPF 窗口程序或者网页程序
5、通过控件组成之后,需要通过一定的排列方式来显示出页面的层次或者区域特性,这个特性需要布局的功能来实现。实际上, 布局的实现是通过布局控件来完成的,通用的布局包括网格、堆叠和停靠布局等。 q 数据绑定:窗口程序很多场景需要提供数据的显示,以供用户进行阅读和操作。数据绑定完成了窗口控件与数据源之间的数据交互的过程。WPF 可以通过ADO.NET 等相关技术,实现对数据的读取,将获取的数据绑定到对应的数据控件上,完成数据的绑定,以及后续数据的操作等。 q 输入:由用户完成的输入 ,然后通过控件检测之后发出响应。WPF 输入系统使用直接和路由来支持文本输入、焦点管理和鼠标定位。 q 命令:应用程序通常
6、具有复杂的输入要求。WPF 提供了一个命令系统,它将用户输入操作与响应这些操作的代码相分离。 q 图形:WPF 在处理图形功能上,可谓是其强项所在,它引进了一组广泛的、灵活的、可扩展的图形处理功能。具有如下优点:与分辨率和设备无关的图形;更高的精度;高级图形和动画支持;硬件加速。除此之外,它还在处理二维形状、二维几何图形、三维呈现等图形展现上有强大的支持。 q 动画:WPF 动画支持可以使控件变大、旋转、调节和淡化,以产生有趣的页面过渡和更多效果。可以对大多数 WPF 类或者是自定义类进行动画处理。 q 媒体:媒体的应用包括图像、视频和音频。WPF 对于这些媒体的应用提供了特殊的支持。 q 文
7、档:WPF 支持使用三种类型的文档,即流文档、固定文档和 XML 纸张规范(XPS) 文档。WPF 还提供了用于创建、查看、管理、批注、打包和打印文档的服务。 q 自定义应用程序:WPF 提供了强大的自定义功能,通过该功能,开发人员可以创建出符合自身需求的通用的模板以及个性化特点的应用程序。可自定义部分包括内容模型、控件模板、数据模板、样式、资源、主题和资源、自定义控件等。 765 27.2 WPF 应用程序 同.NET 其他的应用程序相同,WPF 也包括几种适合的 WPF 应用程序类型,这些应用程序可以通过 Visual Studio 2008 进行创建和开发。本节将介绍 WPF 应用程序的
8、相关编程以及程序的创建过程。 27.2.1 WPF 编程WPF 程序开发可以通过 Visual Studio 2008 中的项目创建来实现,Visual Studio 2008 可以创建 4 种 WPF 类型的项目,分别是:WPF 应用程序、WPF 浏览器应用程序、WPF 用户控件库和 WPF 自定义控件库。 已注意:WPF 应用程序类似客户端服务器模型的应用程序,需要单独的客户端工具。而 WPF 浏览器应用程序是可以运行在浏览器的应用程序。 下面通过一个创建 WPF 应用的过程,来说明 WPF 项目的项目结构以及 Visual Studio 2008 中 WPF 的开发界面组成。 (1) 创
9、建 WPF 应用程序。单击“开始”|“程序”|Microsoft Visual Studio 2008|Microsoft Visual Studio 2008 按钮,启动 Visual Studio 2008 开发工具。启动之后的工具如图 27.2 所示。 图 27.2 Visual Studio 2008 启动窗口 已技巧:启动窗口可以通过菜单栏的“工具”|“选项”菜单中的“选项”对话框里“环 境”|“启动”对话框进行设置。 第 27 章 WPF 框架 单击菜单栏中的“文件”|“新建”|“项目”菜单,弹出“新建项目”的对话框,如图 27.3 所示。 图 27.3 Visual Studio
10、 2008 新建项目对话框 在“新建项目”对话框中,左侧的“项目类型”区域列出了 Visual Studio 2008 可以创建的所有类型,右侧的“模板”区域列出了对应该项目类型所包含的模板信息。如果需要创建 WPF 应用程序,在“项目类型”区域选择 Windows,右侧“模板”区域选择“WPF 应用程序”。在“名称”栏输入该项目的名称,“位置”栏输入该项目保存的路径,然后单击“确定”按钮。 已说明:若要创建 WPF 浏览器应用程序,需要在“模板”区域选择“WPF 浏览器应用程序”。 (2) 查看项目结构组成。项目创建完毕后,可以在 Visual Studio 2008 中,通过“解决方案资源
11、管理器”查看该项目的文件结构,如图 27.4 所示。 图 27.4 Visual Studio 2008 解决方案资源管理器 767 已注意:如果“解决方案资源管理器”窗口默认没有显示出来,可以单击菜单栏中的“视 图”|“解决方案资源管理器”菜单,打开“解决方案资源管理器”窗口。 (3) 程序开发。单击图 27.4 中的 Window1.xaml 文件节点,弹出设计窗口和 XAML 窗口,如图 27.5 所示。 图 27.5 “设计”视图和“XAML”视图 “设计”视图,用于可视化的界面设计,开发人员可以直接通过拖曳“工具箱”中的控件到“设计”视图中,完成控件的添加。“XAML”视图用来显示对
12、应设计视图界面的XAML 代码,也可以通过 XAML 视图的直接编辑,来完成控件的添加。 已注意:“设计”视图与 XAML 视图是同步的,即在“设计”视图添加一个控件,XAML 视图中将自动添加该控件对应的 XAML 代码。 如果在“设计”视图里添加一个按钮控件,添加之后的“设计”视图和 XAML 视图如图 27.6 所示。 单击图27.4 中的Window1.xaml.cs 文件节点,弹出Window1 对应的代码编写窗口, 如图 27.7 所示。 通过图 27.7 的代码编辑窗口,可以编写该文件对应的操作代码。 已技巧:除了通过“解决方案资源管理器”窗口双击该 cs 文件打开代码编辑窗口之
13、外, 还可以在“设计”视图里,右键单击“查看代码”菜单,打开代码编辑窗口。 图 27.6 添加控件之后的“设计”视图和 XAML 视图 图 27.7 代码编辑窗口 第 27 章 WPF 框架 27.2.2 WPF 应用程序WPF 应用程序就是通常所说的 Windows 应用程序,其是用于构件客户端/服务器应用模型的应用程序类型。本节将以实例介绍如何通过 Visual Studio 2008 创建完整的 WPF 应用程序。 (1) 创建 WPF 应用程序项目。参照 27.2.1 节中的步骤(1),创建 WPF 应用程序, 将“名称”设置为 HelloWorldWindowsApp,如图 27.8
14、 所示。 图 27.8 创建 WPF 应用程序 (2) 添加控件。在“解决方案资源管理器”窗口中,双击 Window1.xaml 文件,在 XAML 窗口输入如下代码: Window x:Class=HelloWorldWindowsApp.Window1xmlns=/winfx/2006/xaml/presentation xmlns:x=/winfx/2006/xamlTitle=HelloWorld Height=300 Width=300点击!771 此段代码表示在窗体中,添加了
15、一个 Grid 网格控件,在网格中添加了一个按钮控件, 分别定义了该按钮控件的名称、宽度、高度、显示名称等属性,同时定义了该按钮的一个 单击,名称为 button_Click。 /定义分部类 public partial class Window1 : Window/ 构 造 函 数 public Window1()/初始化窗体组件InitializeComponent();/定义按钮单击 private void button_Click(object sender, RoutedEventArgs e)/弹出提示窗口MessageBox.Show(Hello World !);(3) 添加
16、处理代码。双击 Window1.xaml.cs 文件,打开该文件的代码编辑窗口。在 Windows1 类中添加如下代码。 方法 button_Click 为响应代码,表示该按钮被单击之后的代码处理逻辑,方法内部表示单击该按钮之后,弹出一个消息框,显示“Hello World!”文本。 (4) 运行该项目。单击菜单栏“调试”|“启动调试”菜单,Visual Studio 2008 开始编译该项目,同时弹出运行结果。单击【点击】按钮之后,运行结果如图 27.9 所示。 图 27.9 WPF 应用程序运行效果 已技巧:除了通过菜单栏的功能菜单完成程序运行之外,还可以通过 F5 功能键实现运行。 27
17、.2.3 WPF 浏览器应用程序与 WPF 应用程序不同,WPF浏览器应用程序就是通常所说的基于浏览器的应用程序, 其是用于构建浏览器端/服务器应用模型的应用程序类型。本节将以实例介绍如何通过Visual Studio 2008 创建完整的 WPF 浏览器应用程序。 (1) 创建 WPF 浏览器应用程序项目。参照 27.2.1 节中的步骤(1),创建 WPF 浏览器应用程序,将“名称”设置为 HelloWorldPagesApp,如图 27.10 所示。 图 27.10 创建 WPF 浏览器应用程序 Page x:Class=HelloWorldPagesApp.Page1 xmlns=htt
18、p://winfx/2006/xaml/presentation xmlns:x=/winfx/2006/xamlTitle=Page1点击!(2) 添加控件。在“解决方案资源管理器”窗口中,双击 Page1.xaml 文件,在 XAML 窗口输入如下代码。 可以参考 WPF 应用程序中的代码,对比发现,二者除了根元素有区别之外,其他内 容全部一样。这与以前的程序开发区别很大,说明 WPF 在处理基本应用程序和浏览器应用程序的代码部分可以重复利用。 /定义分部类 public partial cla
19、ss Page1 : Page/构造函数 public Page1()/初始化窗体组件InitializeComponent();/定义按钮单击 private void button_Click(object sender, RoutedEventArgs e)/弹出提示窗口MessageBox.Show(Hello World !);(3) 添加处理代码。双击 Page1.xaml.cs 文件,打开该文件的代码编辑窗口。在 Page1 类中添加如下代码。 方法 button_Click 为 响应代码,表示该按钮被单击之后的代码处理逻辑,方法内部代码表示单击该按钮之后,弹出一个消息框,显示“
20、Hello World!”文本。该类与 WPF 应用程序比较,区别在于实现窗口的类继承不同,WPF 应用程序继承于 Window 类,而该浏览器应用程序的实现类继承于 Page 类。 (4) 运行该项目。单击菜单栏“调试”|“启动调试”菜单,Visual Studio 2008 开始编译该项目,同时弹出运行结果。单击“点击”按钮之后,运行结果如图 27.11 所示。 图 27.11 WPF 浏览器应用程序运行效果 第 27 章 WPF 框架 已注意:WPF 浏览器应用程序与 WPF 应用程序不同,它是以浏览器作为运行载体的。 27.3 简单 WPF 实例 WPF 是一个很广泛的框架,其中涉及到
21、的技术很多,本章将从几个重要方面介绍 WPF的技术组成与具体实现。 27.3.1 ListBox 控件的使用与控件属性WPF 是实现系统页面展现的框架,所以 WPF 的展现系统中,控件起着重要的作用, 可以说众多绚丽的 WPF 页面效果都是由基本的 WPF 控件结合其他技术实现的。在前面的WPF 的应用程序中,已经介绍了按钮控件,以及其相关,本节将通过一个完整的实例, 介绍 ListBox 选择控件,以及简单介绍实现控件的 XAML 语言。 (1) 创建项目名称为 ListBoxSample 的 WPF 应用程序。 Window x:Class=ListBoxSample.Window1 xm
22、lns=/winfx/2006/xaml/presentation xmlns:x=/winfx/2006/xamlTitle=ListBox 测试 Height=286 Width=294(2) 在项目中的 Window1.xaml 文件的 XAML 编辑视图中,首先添加 Window 窗体的代码定义,示例代码如下: 其中的 Window 节点表示该页面属于 WPF 应用程序的窗口定义文件,X:Class 属性表示该 XAML 文件对应的 类的名称,此实例的 代码文件的命名空间为Lis
23、tBoxSample,类名称为 Window1。Xmlns 属性表示该 XMAL 文件定义的命名空间,默认都是标准的 /winfx/2006/xaml/presentation,Title 属性表示该窗口的名称,Height 和 Width 属性分别表示该窗口的高度和宽度。 (3) 添加布局控件。接下来在 XMAL 视图中,再添加一个 Canvas 布局控件,布局控件是用来对页面的控件位置进行控制的位置控件,代码如下: 801 在该 Canvas 布局控件中,定义了资源文件,资源文件的语法为 Canvas.Resources,然后通过样式
24、Style 节点进行描述。3 个样式对应的键值名称分别为 Simple,SimpleList- BoxItem 和 Triggers。但 3 个样式对应的控制控件类型 TargetType 却不一样,Simple 对应控制的是 ListBox 控件的样式,而 SimpleListBoxItem 和 Triggers 控制的是 ListBoxItem 的样式 ,关 键字 x:Type 表 示针对 的对 象类 型, x 则表 示前 面已 经定 义过 的xmlns:x=/winfx/2006/xaml 命名空间。在 Style 中定义该指定控件的
25、具体属性,比如 Simple 样式中,定义了 ListBox 控件的 SelectionMode 属性为 Single, 即只能单选,同时定义了 Background 属性为 Red,即背景色为红色。除了可以定义样式的静态属性之外,还可以定义样式的触发器属性,如 Triggers 属性的节点, 定义了触发器的激活动作为 IsMouseOver,即在鼠标经过 ListBoxItem 子项的时候,样式被激活,激活的效果是前景色为 Red,背景色为 LightBlue。 (4) 添加网格控件。接下来,在页面添加一个 Grid 网格控件,用于放置 3 个 ListBox 控件。代码如下: 选项 1选项
26、 2选项 3选项 4选项 5选项 6选项 7选项 8选项 9选项 10选项 1选项 2选项 3选项 4选项 5选项 6选项 7选项 8选项 9选项 10选项1选项2选项3选项4选项5选项6选项7选项8选项9选项10该 Grid 控件为 5 行 1 列,然后将 DockPanel 布局控件添加到 Grid 控件中已经划分好的行单元格中,Grid.Column 属性和 Grid.Row 属性指定了该 DockPanel 控件所在 Grid 控件中的位置。添加完 3 个 DockPanel 之后,再将 3 个 ListBox 控件放置到 DockPanel 之中,然后通过 Style=StaticR
27、esource *语法,对各个控件的样式进行指定。 (5) 运行该实例的效果如图 27.12 所示。 图 27.12 ListBox 控件使用效果 27.3.2 使用Hyperlink 控件实现多页面切换Hyperlink 控件是用来实现超级链接功能的控件,使用该控件可以完成多个内部页面之间的导航或者直接通过浏览器打开外部网站的页面。 已说明:Hyperlink 控件可以实现类似于网页的链接效果,但不同的是,该控件也可以在客户服务端应用程序模型中使用。 下面通过一个实例介绍如何使用 Hyperlink 控件实现多个页面切换。 (1) 创建 WPF 应用程序,项目名称为 MultiPageSam
28、ple。 (2) 打开 Page1.xaml 文件的 XAML 视图编辑,在页面中添加如下代码。 起始页下一页在页面中添加了一个 Hyperlink 控件,该控件的 NavigateUri 属性设置为链接的目标页面名称,同时指定了链接的文本为“下一页”。 第二页跳转到起始页(3) 添加一个 Page 页面,命名为 Page2.xaml,同样在 XAML 视图编辑中添加如下代码。 该页面中也同样设置了一个 Hyperlink 控件,该控件的链接目标页面为 Page1.xaml, 文本为“跳转到起始页”,这样便实现了两页面之间的链接切换。 (4) 运行该实例,效果如图 27.13、图 27.14
29、所示。 图 27.13 Hyperlink 控件的首页图 27.14 Hyperlink 控件的页面切换 27.3.3 使用DockPanel 布局控件布局控件是用来控制页面控件的摆放位置。布局控件有很多种,具体各个控件的名称与说明如表 27.1 所示。 表 27.1 布局控件说明名称说明Canvas定义一个区域,在此区域内,可以使用相对于Canvas区域的坐标 DockPanel定义一个区域,在此区域中,可以使子元素互相水平或垂直排列 Grid定义由行和列组成的灵活网格区域 StackPanel将子元素排列成一行 VirtualizingPanel为其子数据集合的Panel元素提供一个框架
30、WrapPanel从左至右按顺序位置定位子元素,在包含框的边缘处将内容断开至下一行 本节和 27.3.4 节将分别按实例说明两种布局控件,DockPanel 控件和 StackPanel 控件。DockPanel 控件用于沿布局容器的边缘定位子内容。开发用户界面时,如果想将某个控件停靠到窗口一侧,例如,菜单栏经常停靠在窗口的顶部或一侧,可以使用 DockPanel 容器将控件停靠到窗口侧面。 实例的创建过程如下所述。 (1) 创建 WPF 浏览器应用程序,项目名称为 LayoutSample。 (2) 打开 Page1.xaml 文件的 XAML 视图编辑,在页面中添加如下代码。 标题栏状态栏
31、.菜单栏登录注册该布局采用的是 DockPanel 控件 从以上代 码可以看 出, DockPanel 将该 页面分 为 4 个部分 ,分别是DockPanel.Dock=Top 的标题栏、DockPanel.Dock=Left 的菜单栏、子区域的内容栏和DockPanel.Dock=Bottom的状态栏。4 部分分别用不同颜色加以区别, (3) 运行该实例,效果如图 27.15 所示。 图 27.15 DockPanel 控件使用效果 27.3.4 使用StackPanel 布局控件StackPanel 控件是另外一种常用的布局控件。StackPane 要么垂直叠放包含的控件,要么将包含的控件排列在水平行中,具体情况取决于 Orientation 属性的值。如果将比StackPanel 的宽度能显示的控件还要多的控件添加到 StackPanel 中,这些控件将被截掉且不显示。 已注意:StackPanel控件的 Orienta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 登高高处作业国考题库带答案详解(巩固)
- 税务局国考行测题库及参考答案详解一套
- 消防初级国考理论题库附完整答案详解(有一套)
- 贵州行测国考题库【研优卷】附答案详解
- 国考题库文件下载及完整答案详解(名师系列)
- 税务局国考行测题库及参考答案详解【b卷】
- 计算机国考题库新版附答案详解
- 2025广东韶关市乳源县大布镇人民政府招聘敬老院人员1人备考考试题库附答案解析
- 国考题库【含答案详解】
- 国考题库往年题考附答案详解
- DB42-T 2189-2024 小流域水土保持综合治理项目实施方案编制技术规范
- 心脑血管疾病讲座课件
- SKF递进润滑系统课件
- 项目管理投资控制目标及方案措施
- 2025江西文演发展集团教育科技有限责任公司招聘11人笔试参考题库附带答案详解
- 2025浙江金华开放大学招聘教师10人笔试备考试题带答案详解
- 宋代点茶法课件
- 小学道德与法治新部编版二年级上册全册教案(2025秋)
- 公路安全知识竞赛题库及答案解析
- 物业工程保养维护方案(3篇)
- 业务数据使用管理办法
评论
0/150
提交评论