第2章 WPF编程基础.ppt
《第2章 WPF编程基础.ppt》由会员分享,可在线阅读,更多相关《第2章 WPF编程基础.ppt(142页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第二章第二章 WPF编程基础编程基础 2学习目的学习目的n n掌握掌握WPFWPF设计方法,了解设计方法,了解WinFormWinFormn n能够使用能够使用VS2008VS2008设计设计WindowsWindows应用程序。应用程序。n n能够使用能够使用VS2008VS2008设计设计WPFWPF指定功能的程序。指定功能的程序。32.1 Windows编程接口和类库编程接口和类库 n nAPI(Application Programming Interface)API(Application Programming Interface)是是WindowsWindows操作系统操作系统
2、编写编写WindowsWindows应用程序函数库,库中函数采用应用程序函数库,库中函数采用C C语言调用格语言调用格式。用式。用C C语言直接调用语言直接调用APIAPI函数也可以编制函数也可以编制WindowsWindows应用程应用程序,但大量的代码必须由程序员自己编写,给编程者带来序,但大量的代码必须由程序员自己编写,给编程者带来很大的困难。很大的困难。n n.Net FrameWork.Net FrameWork中包括编写中包括编写WindowsWindows应用程序、应用程序、WebWeb应用程应用程序的基础序的基础类库类库(BCL)(BCL),它是一个统一的、面向对象的、层次,它
3、是一个统一的、面向对象的、层次化的、可扩展类库,统一了微软当前各种不同框架和开发化的、可扩展类库,统一了微软当前各种不同框架和开发模式,无论开发模式,无论开发WindowsWindows应用程序,还是开发应用程序,还是开发WebWeb应用程序,应用程序,采用相同组件名称,组件具有类似属性、方法和事件,开采用相同组件名称,组件具有类似属性、方法和事件,开发模式也相似,方便学习。该类库支持控件可视化编程。发模式也相似,方便学习。该类库支持控件可视化编程。VC+.NetVC+.Net、VB.NetVB.Net、C#C#语言都使用这个类库,消除了各语言都使用这个类库,消除了各种语言开发模式的差别。种语
4、言开发模式的差别。42.2 GDI和和WPF n nGDIGDI是是2 2维图形库,它允许程序员用库中的函数编维图形库,它允许程序员用库中的函数编写与显视器、打印机和文件等图形设备进行交互写与显视器、打印机和文件等图形设备进行交互的的WindowsWindows和和WebWeb应用程序应用程序,可以在这些设备上输出可以在这些设备上输出字符和字符和2D2D图形。自图形。自WindowsWindows操作系统问世,操作系统问世,GDIGDI就是其固有的就是其固有的2 2维图形库。虽然随着维图形库。虽然随着WindowsWindows操作操作系统升级,系统升级,GDIGDI也不断改进并升级到也不断改
5、进并升级到GDI+,GDI+,但远但远远跟不上硬件发展速度,现代显卡都有自己的远跟不上硬件发展速度,现代显卡都有自己的GPU(GPU(图形处理器图形处理器),GDI),GDI最大的缺点就是不能利用最大的缺点就是不能利用现代显卡的强大图形处理能力。现代显卡的强大图形处理能力。n n为此微软推出最新为此微软推出最新图形编程库图形编程库WPFWPF,是下一代显,是下一代显示系统。示系统。5n n和和GDIGDI相比相比WPFWPF有如下优点:有如下优点:和和DirectXDirectX采用相同技术,统一了微软各种图形类库。采用相同技术,统一了微软各种图形类库。引入了引入了XAMLXAML界面标记语言
6、,将界面设计和编写代码界面标记语言,将界面设计和编写代码分开,方便设计。分开,方便设计。支持支持2D2D和和3D3D图形、动画、视频及音频回放。图形、动画、视频及音频回放。可以和可以和GDIGDI模型互操作。模型互操作。包括包括XMLXML文件规范文件规范(XPS)(XPS)文档、固定文档文档、固定文档(WYSIWYG)(WYSIWYG)、流文档和文档注释等多种文档处理模型。流文档和文档注释等多种文档处理模型。WPFWPF控件使用增强型数据绑定引擎,支持多种内容到控件使用增强型数据绑定引擎,支持多种内容到WPFWPF控件的绑定。控件的绑定。WPFWPF控件使用矢量图形,自适应不同分辨率显示器。
7、控件使用矢量图形,自适应不同分辨率显示器。支持多种布局管理器,支持多种布局管理器,WinFormWinForm只有很少几种。只有很少几种。62.3 TextBlock、Label和和Button控件控件 n nTextBlockTextBlock控件用来显示文本信息,用户不能编辑该控件显控件用来显示文本信息,用户不能编辑该控件显示的文本信息,常用来输出标题、显示处理结果和标记窗示的文本信息,常用来输出标题、显示处理结果和标记窗体上的对象。体上的对象。TextBlockTextBlock控件一般不用于触发事件。控件一般不用于触发事件。TextBlockTextBlock控件常用属性如下:控件常用
8、属性如下:TextText:要显示的文本内容。:要显示的文本内容。ForegroundForeground:控件:控件TextBlockTextBlock显示的字符颜色,是一个显示的字符颜色,是一个BushBush对象对象(参见第参见第4 4章章)。FontFamilyFontFamily:使用字体名字,例如置为宋体令其等于:使用字体名字,例如置为宋体令其等于new FontFamily(new FontFamily(宋体宋体)。FontSizeFontSize:字体大小,例如:字体大小,例如textBlock1.FontSize=10.1textBlock1.FontSize=10.1。(这
9、一部分字体不同)(这一部分字体不同)FontStyleFontStyle:textBlock1.FontStyle=FontStyles.NormaltextBlock1.FontStyle=FontStyles.Normal为正常为正常字体,还可以为斜体字体字体,还可以为斜体字体(FontStyles.Italic)(FontStyles.Italic)、为倾斜字体、为倾斜字体(FontStyles.Oblique)(FontStyles.Oblique)。7n nLabelLabel控件显示内容用属性控件显示内容用属性ContentContent记录,因此显示内容不但记录,因此显示内容不但
10、可以是字符串,也可以是复杂数据对象,但占用较多资源,可以是字符串,也可以是复杂数据对象,但占用较多资源,如果仅显示字符串,还是使用如果仅显示字符串,还是使用TextBlockTextBlock控件较好。控件较好。n n使用使用ButtonButton控件,可以在窗体中增加按钮,用户单击按钮,控件,可以在窗体中增加按钮,用户单击按钮,触发单击按钮事件,自动调用单击按钮事件处理函数,完触发单击按钮事件,自动调用单击按钮事件处理函数,完成指定的工作。成指定的工作。ButtonButton控件常用属性和事件如下:控件常用属性和事件如下:属性属性ContentContent:按钮标题内容属性:按钮标题内
11、容属性IsDefaultIsDefault:是否是默认:是否是默认按钮,如是默认按钮,键入回车键相当于单击该按钮。按钮,如是默认按钮,键入回车键相当于单击该按钮。属性属性IsCancelIsCancel:是否是:是否是 取消取消 按钮,如是按钮,如是 取消取消 按钮键入按钮键入ESCESC键相当于单击该按钮。键相当于单击该按钮。事件事件ClickClick:用户单击按钮触发的事件,一般称作按钮单:用户单击按钮触发的事件,一般称作按钮单击事件。击事件。82.4 WPF控件通用属性控件通用属性 WPF WPF位于位于 System.Windows System.Windows 命名空间。类库中大部
12、分控命名空间。类库中大部分控件都在件都在System.Windows.ControlsSystem.Windows.Controls命名空间命名空间,以下是一些常用以下是一些常用属性:属性:NameName:控件名称,区别控件类不同对象的唯一标志。:控件名称,区别控件类不同对象的唯一标志。TextText和和Content:TextContent:Text是字符串类型,是字符串类型,TextBoxTextBox和和TextBlockTextBlock控件只有控件只有TextText属性,记录输入或显示的字符串。属性,记录输入或显示的字符串。ContentContent属性是属性是ObjectO
13、bject类型,大部分控件只有类型,大部分控件只有ContentContent属性属性,。ForegroundForeground:用于描述前景色的画笔,例如:用于描述前景色的画笔,例如LabelLabel是显示是显示字符的颜色。字符的颜色。BackgroundBackground:描述控件背景的画笔:描述控件背景的画笔FontFamilyFontFamily、FontSizeFontSize、FontStretchFontStretch、FontStyleFontStyle和和FontWeightFontWeight:分别是字符所使用的字体名称、字体的大:分别是字符所使用的字体名称、字体的大
14、小、字体在屏幕上的压缩或放大方式、字体风格和字小、字体在屏幕上的压缩或放大方式、字体风格和字体的粗细等。体的粗细等。9WidthWidth、HeightHeight、ActualWidthActualWidth和和ActualHeightActualHeight:控件的宽、:控件的宽、高、实际宽和高。如果高、实际宽和高。如果MarginMargin属性的属性的4 4个边距都不为个边距都不为0 0,实际宽、高可能和宽、高不同。,实际宽、高可能和宽、高不同。MarginMargin:控件距离其所在容器的左边、上边、右边和:控件距离其所在容器的左边、上边、右边和下边的距离。下边的距离。Horizon
15、talAlignmentHorizontalAlignment:在水平方向子控件相对于容器左:在水平方向子控件相对于容器左边还是右边对齐。边还是右边对齐。VerticalAlignmentVerticalAlignment:在垂直方向子控件相对于容器上边:在垂直方向子控件相对于容器上边还是下边对齐。还是下边对齐。ToolTipToolTip:当鼠标在控件上停留一段时间后,会在旁边:当鼠标在控件上停留一段时间后,会在旁边出现提示字符串。出现提示字符串。IsEnabledIsEnabled:布尔变量为:布尔变量为truetrue表示控件可使用,为表示控件可使用,为falsefalse表表示不可用,
16、控件变灰色。示不可用,控件变灰色。VisibilityVisibility:为:为VisibleVisible控件正常显示,为控件正常显示,为HiddenHidden或或CollapsedCollapsed控件不可见。控件不可见。CursorCursor:鼠标移到控件上方时,鼠标显示的形状。:鼠标移到控件上方时,鼠标显示的形状。102.5 WPF程序基本结构程序基本结构【例例例例2.12.1】本例用本例用C#C#代码创建一个最简单的代码创建一个最简单的WPFWPF应用程序。应用程序。using System.Windows;/WPFusing System.Windows;/WPF应用程序必须
17、引用的命名空间应用程序必须引用的命名空间using System.Windows.Controls;/WPFusing System.Windows.Controls;/WPF控件所在的命名空间控件所在的命名空间namespace e2_1namespace e2_1 class Window1:Window class Window1:Window /WPF /WPF窗口类,必须以窗口类,必须以WindowWindow类为基类类为基类 STAThread STAThread static void Main()static void Main()Application ap=new Appl
18、ication();Application ap=new Application();/必须建立必须建立ApplicationApplication对象对象 ap.Run(new Window1();ap.Run(new Window1();11【例例例例2.22.2】本例用本例用C#C#代码创建一个简单的代码创建一个简单的WPFWPF应用程序,在窗应用程序,在窗体中增加了一个按钮体中增加了一个按钮(Button)(Button)控件,并为单击按钮事件增加控件,并为单击按钮事件增加事件处理函数,单击按钮退出程序。事件处理函数,单击按钮退出程序。namespace e4_1namespace e
19、4_1class Window1:Window class Window1:Window private Button button1=new Button();private Button button1=new Button();public Window1()public Window1()Title=Title=不使用不使用VS2008VS2008创建的创建的WPFWPF程序程序;WindowStartupLocation=WindowStartupLocation.CenterScreen;WindowStartupLocation=WindowStartupLocation.Cen
20、terScreen;Height=200;Height=200;This.Width=300;This.Width=300;button1.Click+=newRoutedEventHandler(button1_Clicked);button1.Click+=newRoutedEventHandler(button1_Clicked);button1.Height=25;button1.Height=25;12 button1.Width=100;button1.Width=100;button1.Content=button1.Content=退出程序退出程序;AddChild(butto
21、n1);AddChild(button1);Show();Show();private void button1_Clicked(object sender,RoutedEventArgs e)private void button1_Clicked(object sender,RoutedEventArgs e)Application.Current.Shutdown();Application.Current.Shutdown();STAThread STAThreadstatic void Main()static void Main()Application ap=new Applic
22、ation();Application ap=new Application();ap.Run(new Window1();ap.Run(new Window1();13n n请注意步骤:请注意步骤:首先定义首先定义ButtonButton类变量类变量button1button1,这是,这是Window1Window1类类的一个字段,由于主窗体关闭程序也就结束了,的一个字段,由于主窗体关闭程序也就结束了,因此变量因此变量button1button1的生命周期和程序的生命周期的生命周期和程序的生命周期是相同的。是相同的。第二步在构造函数中用第二步在构造函数中用newnew生成生成ButtonBu
23、tton类对象类对象第三步在构造函数中修改第三步在构造函数中修改button1button1的属性的属性第四步增加第四步增加button1button1的事件处理函数。的事件处理函数。142.6 Application 类和类和Window类类 n nSystem.Windows.Application System.Windows.Application 类包括一些常用属性和事类包括一些常用属性和事件如下:件如下:属性属性CurrentCurrent:运行程序的:运行程序的 Application Application 类对象。类对象。属性属性MainWindow MainWindow:运
24、行的应用程序主窗口对象。:运行的应用程序主窗口对象。方法方法ShutdownShutdown:关闭应用程序。:关闭应用程序。事件事件StartupStartup:在调用:在调用 Application Application 对象的对象的 Run Run 方法方法时发生。有时需要用户登录才能使用程序,可在时发生。有时需要用户登录才能使用程序,可在该事件函数中要求使用者登录。该事件函数中要求使用者登录。事件事件ExitExit:退出程序该事件发生。:退出程序该事件发生。15【例例例例2.32.3】本例用本例用C#C#代码创建一个简单的代码创建一个简单的WPFWPF应用程序如下,退出程序显应用程序
25、如下,退出程序显示对话框。示对话框。using System;using System;using System.Windows;using System.Windows;using System.Windows.Controls;using System.Windows.Controls;namespace SimpleWPFAppnamespace SimpleWPFApp class MyWPFApp:Application class MyWPFApp:Application STAThread STAThread static void Main()static void Main(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 WPF编程基础 WPF 编程 基础
限制150内