欢迎来到天天文库
浏览记录
ID:41032813
大小:1.19 MB
页数:56页
时间:2019-08-14
《分享(C#高级编程第6版doc)第34章 Windows Presentatio》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第34章WindowsPresentationFoundationWindowsPresentationFoundation(WPF)是.NETFramework3.0中的三个主要扩展之一。WPF是为智能客户应用程序创建UI的一个新库。Windows窗体控件基于Windows内置控件,利用了基于屏幕像素的Windows句柄。而WPF基于DirectX。应用程序不再使用Windows句柄,更便于重新设置UI的大小,并内置了音频和视频的支持。本章的主要论题如下:● WPF概述● 用作基本绘图元素的图形● 利用转换功能实现缩放、旋转和倾斜● 填充元素的不同笔刷● WPF控件及其特
2、性● 如何用WPF面板定义布局● WPF事件处理机制● 样式、模板和资源34.1 概述WPF的一个主要特性是设计人员和开发人员的工作很容易分开。设计人员的工作成果可以直接供开发人员使用。为此,必须理解XAML。本章的第一个主题是概述WPF,理解XAML的规则,讨论设计人员和开发人员如何合作。WPF由几个包含了上千个类的程序集组成。因此用户可以在这些类中浏览,查找需要的类,大致了解WPF中的类层次结构和命名空间。34.1.1 XAMLXMLforApplicationsMarkupLanguage(XAML)是一种XML语法,用于定义用户界面的层次结构。在下面的代码行中,声明
3、了一个内容为ClickMe!、名为button1的按钮。元素指定使用Button类:ClickMe!提示:XAML元素总是有一个.NET类。在特性和子元素中,可以设置属性的值,定义事件的处理程序方法。为了测试简单的XAML代码,可以启动实用工具XAMLPad.exe(参见图34-1),在编辑字段中输入XAML代码。在XAMLPad中,可以在已准备好的和元素中编写元素。利用XAMLPad可以立即查看XAML结果。 (点击查看大图)图 34-1XAML代码可以由
4、WPF运行库解释,也可以编译为BAML(BinaryApplicationsMarkupLanguage),在默认情况下,这是由VisualStudioWPF项目完成的。BAML添加为可执行文件的一个资源。除了编写XAML之外,也可以用C#代码创建按钮。我们可以创建一个正常的C#控制台应用程序,添加对程序集WindowsBase、PresentationCore和PresentationFramework的引用,再编写下面的代码。在Main()方法中,从System.Windows命名空间中创建一个Window对象,设置Title属性。接着从System.Windows.C
5、ontrols命名空间中创建一个Button对象,设置Content属性,将窗口的Content属性设置为该按钮。Application类的Run()方法负责处理Windows消息。usingSystem;usingSystem.Windows;usingSystem.Windows.Controls;namespaceWrox.ProCSharp.WPF{classProgram{ [STAThread]staticvoidMain(){WindowmainWindow=newWindow();mainWindow.Title="WPFApplication";Butto
6、nbutton1=newButton();button1.Content="ClickMe!";mainWindow.Content=button1;button1.Click+=(sender,e)=>MessageBox.Show("Buttonclicked");Applicationapp=newApplication();app.Run(mainWindow);}}}提示:Application类也可以用XAML定义。在VisualStudioWPF项目中,打开App.xaml文件,它包含Application类的属性和StartupUri。运行应用程序,会得到一
7、个包含按钮的窗口,如图34-2所示。 (点击查看大图)图 34-2可以看出,WPF的编程非常类似于Window窗体的编程,其区别是按钮有Content属性,而不是Text属性。但是,与通过代码创建UI窗体相比,XAML有一些非常好的优点。利用XAML,设计人员和开发人员可以更好地合作。设计人员可以用XAML代码设计一个漂亮的UI,开发人员在使用C#在后台代码中添加功能。使用XAML更便于将UI与功能分开。使用后台代码和XAML,可以在C#代码中直接与用XAML定义的元素交互操作。只需为该元素定义名称,将该名称用作变
此文档下载收益归作者所有