WPF入门指南教程.docx

上传人:b****8 文档编号:10150474 上传时间:2023-02-08 格式:DOCX 页数:130 大小:3.03MB
下载 相关 举报
WPF入门指南教程.docx_第1页
第1页 / 共130页
WPF入门指南教程.docx_第2页
第2页 / 共130页
WPF入门指南教程.docx_第3页
第3页 / 共130页
WPF入门指南教程.docx_第4页
第4页 / 共130页
WPF入门指南教程.docx_第5页
第5页 / 共130页
点击查看更多>>
下载资源
资源描述

WPF入门指南教程.docx

《WPF入门指南教程.docx》由会员分享,可在线阅读,更多相关《WPF入门指南教程.docx(130页珍藏版)》请在冰豆网上搜索。

WPF入门指南教程.docx

WPF入门指南教程

文章由情难枕精心整理,希望对大家的学习和工作带来帮助

WPF入门指南一:

快速入门

【IT168技术文档】

 摘要:

WPF是微软推出的基于WindowsVista的用户界面框架,属于.NETFramework3.0的一部分。

本文旨在通过一些简单的示例,让你对WPF有一个概要的认识。

主要内容

1.概述

2.WPF的组成

3.WPF的编程架构

4.XAML

5.WPF中的控件集

一.概述

WPF(WindowsPresentationFoundation)是微软推出的基于WindowsVista的用户界面框架,属于.NETFramework3.0的一部分。

它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。

二.WPF的组成

WPF的构成组件如下所示,其中PresentationFramework、PresentationCore、milcore三部分是WPF的核心组件:

 

 

三.WPF的编程架构 

   

 WPF整体的编程架构如图2所示,可以看到,它其中包含了文档服务、用户界面服务、多媒体服务以及一些其它的基本服务。

在用户界面服务中,提供了应用程序服务、部署服务、控件集、布局以及数据绑定等;在多媒体服务中可以看到WPF几乎可以处理所有的媒体类型,包括图片、音频、视频、动画、2D、3D、文本等。

 

四.XAML

在WPF中提供了两种API,一种是用于普通编程的API,比如我们可以用C#、VB.NET等语言进行编程,另一种是基于XML的API,称为XAML(ExtensibleApplicationMarkupLanguage),引入XAML使得UI代码和应用程序逻辑代码完全分离,它是一种标记语言,支持声明式编程,由于XAML是基于XML的,所以它拥有XML的所有规则和定义,非常容易进行扩展。

看下面两段简单的代码:

XAML代码:

Thisisabutton

C#代码:

Buttonbtn1=newButton();

btn1.Content="Thisisabutton";

btn1.Background=Brushes.Blue;

btn1.Foreground=Brushes.Red;

 

五.WPF控件集

 在WPF中,提供了非常丰富的控件集,如表一所示:

分类                                        控件

Editing                                    CheckBox,ComboBox,PasswordBox,RadioButton,RichTextBox,Slider,TextBox

List                                       SelectionListBox,ListView,TreeView

UserInformation                 Label,ProgressBar,Popup,ToolTip

Action                      Button,ContextMenu,Menu,Separator,StatusBar,Thumb,ToolBar

Appearance            Border,BulletDecorator,Decorator,Image,Viewbox

Dialogboxes          OpenFileDialog,PrintDialog,SaveFileDialog

Containers              Expander,GroupBox,RepeatButton,ScrollBar,ScrollViewer,TabControl

Layout                      Canvas,DockPanel,Grid,GridSplitter,Panel,StackPanel,VirtualizingStackPanel,WrapPanel

                                 NavigationFrame,Hyperlink

Documents      DocumentViewer,FlowDocumentPageViewer,FlowDocumentReader,FlowDocumentScrollViewer

以上只是对WPF作一个概要的介绍,在后面的文章中,我会详细的去讲WPF中一些控件的用法\数据绑定、资源处理、样式与模版、文档编程、多媒体编程等内容。

WPF开发简介

【IT168技术文档】

   要赢得世界,必须在恰当的时间做出恰当的事。

这一点,微软做到了。

历经微软DOS,Win31,Win95,Win98,Win2k,WinXP,一路走来,一次比一次热闹,一个比一个精彩、炫丽。

Vista的宣传更是轰轰烈烈,喧嚣日上。

Microsoft总是有能力在恰当的时间制造出意料中的轰动,Vista一经推出便让IT业界趋之若鹜。

   一、掀起你的盖头来,让我看看你的脸——.NETFramework3.0

   与微软对Vista锣鼓宣天的推广相比,对与之相伴的.NETFramework3.0却显得非常低调。

微软没将它作为宣传重点。

所有的幕后英雄总是默默无闻。

对普通用户而言,他们不关心舞台背后的一切,它们更关心的是前台的表现,是那种炫丽奢华的感觉。

真正热捧幕后英雄的,也是我们这群在幕后默默耕耘的程序员们。

我们对.NETFramework3.0有种自然而然的亲切感,因为我们将在此架构上为Vista编写各种程序。

   作为微软精心打造的新一代.NET架构,.NETFramework3.0在Vista时代担当最主要的应用程序接口。

.NET曾被微软寄予厚望和重托,比尔·盖茨先生欲用之来实现一统江湖之志。

事实证明,微软对.Net的推出是成功。

越来越多的应用程序开发者已从Win32和JAVA架构转向.NET开发,越来越多的网站开发人员爱上了。

这让微软看到了希望,他们踌躇满志,他们加紧了对.NET的研发,升级速度越来越快,.NETFramework3.0就是微软在.NETFramework2.0后最重要的升级。

甚至有人惊呼,我们象刘翔一样地飞奔也跟不上微软的速度!

   到了.NETFramework3.0,.NET令程序员更称心、并逐渐“倾心”。

在众多的开发环境,微软的开发系列产品,让它在与其它架构的较量中逐渐抢得上风而独在鳌头。

   Vista集成.NETFramework3.0,可谓珠联璧合。

可以这么讲,没有.NetFramework3.0这个幕后英雄,Vista会黯淡很多。

   .NETFramework3.0(原代号“WinFX”),它构建于.NETFramework2.0之上,同时新增了四个大组件:

WindowsPresentationFoundation(WPF),WindowsWorkflowFoundation(WWF)、WindowsCommunicationFoundation(WCF)和WindowsCardSpace,而这些恰是NETFramework3.0最具价值的部分。

   其中,最令人瞩目的是WPF(原来代号为“Avalon”),它是微软全新的图形界面引擎,为各种应用提供统一的界面技术。

程序员在WPF的帮助下,要开发出媲美Mac程序的酷炫界面已不再是遥不可及的奢望。

WindowsWorkflowFoundation用于开发基于工作流的应用程序;WindowsCommunicationFoundation则用于开发面向服务的应用程序,它是新一代通讯和网络开发框架,为不同类型的网络应用程序提供了一个通用的编程模型,尤其是包含其中的PeerChannel模块,以难以置信的方式消除了开发P2P应用程序的复杂性和困难度;而WindowsCardSpace提供数字标志用户控件。

如果把这些林林总总小巧精美的产品比做是珍珠的话,那么,需要一根金线将这些珍珠串起来,珍珠才更有价值,珍珠才熠熠生辉。

而串起这颗珍珠的金线,就是.NETFramework3.0。

   二、搭建Vista程序的开发环境

   1.如果你使用的是Vista操作系统,那么,由于Vista已集成了.NETFramework3.0,所以不必再单独安装.NETFramework3.0。

但是,如果你是WindowsXP或Windows2003下开发,则必须安装.NETFramework3.0。

   2.要开发Vista应用程序,则必须有VistaSDK开发包的支持。

WindowsSDKforWindowsVistaand.NETFramework3.0包含了大量库文件、头文件、文档、示例和工具。

由于Vista操作系统的推出时间比VisualStudio2005开发工具要晚,因此,针对WindowsVista开发的WindowsSDK和.NETFramework3.0并未集成到VisualStudio2005中。

因此,必须下载此SDK,个头不小(当前最新版本是1.15GB),下载和安装时需要你足够的耐心和毅力,相信这个对于我们这些一向好脾气的程序员产不在话下。

   3.安装VisualStudio2005(中/英文版均可,建议你习惯使用英文版,因为所有版本都是英文版的首先投放市场,而英文版到中文版,现实有三个月以上的时间差,而对于我们这些母语非英语的开发人员,英语关是一个必须跨越的槛,缘引鲁迅老先生的名言改编一下:

世界并没有自己熟悉的路,走得多了,也就熟了路!

英文看得多了,自然也就熟悉了)。

   4.下载并安装VisualStudio2005SP1,VisualStudio2005SP1UpdateforWindowsVista。

VisualStudio2005SP1修补VisualStudio2005许多错误,并增强了一些性能,由于该补丁包要对VisualStudio2005和Vista进行详细检测,安装比较耗时。

   5.为了方便程序员开发.NETFramework3.0下的新型应用,微软还推出了VS2005Extensionsfor.NETFramework3.0(Workflow)和VS2005Extensionsfor.NETFramework3.0(WCF&WPF)扩展组件,为VisualStudio2005提供开发WindowsWorkflowFoundation、WindowsCommunicationFoundation和WindowsPresentationFoundation类型应用程序的模版。

   6.如果要学WPF,特别建议你安装ExpressionBlend(目前版本是ExpressionBlend2AgustPreview版)。

这样,你可以在vs2005新建一个WPF项目,然后用Blend打开此项目,在Blend中对它进行界面设计和美化等工作,然后再转到vs2005下进行程序编码(两个程序之间支持来回切换)。

三、WPF简介

   WindowsPresentationFoundation(WPF)是微软新一代图形系统,运行在.NETFramework3.0架构下,为用户界面、2D/3D图形、文档和媒体提供了统一的描述和操作方法。

基于DirectX9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得益于WPF。

微软还提供了专门的界面开发语言XAML(eXtensibleApplicationMarkupLanguage,可扩展应用程序标记语言),使得界面描述代码和程序代码得以分开,从而提高了开发效率并有利于团队开发。

   XAML是微软为构建下一代应用程序界面而创建的一种新的基于XML的描述性语言,它可对WPF程序的所有界面元素进行定制,从而构成具有WPF风格的界面,并最终形成一个组织良好的XML文档。

由于它最新会被编译成.Net后台代码,因此它能够同后台进行逻辑处理的.NET语言如C#、J#、C++、VB等协同工作,其工作性质类似于ASP.NET中的HTML。

同HTML一样,XAML既可以直接编码,也可以由专门的工具生成。

目前最好的XAML编辑器就是上面我建议你安装的ExpressionBlend了,但你也可以使用WindowsSDKforWindowsVista中的XAMLPad,但功能却显得非常简单。

   实际上,大多数WPF程序将同时包含XAML代码和程序代码,首先使用XAML定义程序界面,然后再用.NET语言编写相应的逻辑代码。

跟ASP.NET类似,逻辑代码既可以直接嵌入XAML文件中,也可以将它保存为独立的代码文件。

尽管XAML并非设计WPF程序所必须,按照传统方式使用程序代码来实现界面依然有效,但是如果使用XAML,界面设计和逻辑设计可以完全分离,不但使程序的开发和维护更加方便,而且在团队开发中,可以使程序员专注于业务逻辑的实现,而将界面设计交由专业人员来完成,从而使各类人员在项目中各尽其能各展其长,开发出功能强大、界面一流的WPF程序。

WPF指南之XAML概述

【IT168技术文档】

   在我开始看WPF文档开始的几天里,脑子里形成了一种错误的想法:

WPF不就是XAML码?

当时的感觉就是郁闷啦,我学习WPF还得弄这个东西。

给人的第一感觉就是WPF很复杂。

虽然对WPF的熟悉和了解还不是特别多,但现在已经知道这确实是一种错误的想法。

   CharlesPetzold先生曾有一篇文章介绍了WPF、XAML的一些关系(TheTwoAPIs)。

文章中说明了WPF为什么很复杂:

因为WPF有两套API,一套用于普通的编码访问(比如C#、VB.NET等其中.NET支持的语言。

而另外一套就是基于XML的API,被称为XAML(ExtensibleApplicationMarkupLanguage)。

   XAML实现UI代码和应用程序逻辑代码的分离。

在.NET3.0和WindowsVista中,XAML与WPF一起建立整个的UI。

由于XAML是基于XML的,所以每个XAML代码都肯定是一个完整的XML文件。

XAML继承了XML所有的定义和规则。

XAML与其他XML扩展不同之处就是他所表示的意义。

每个XAML元素是一个.NETCLR类。

基于XML使得我们非常容易扩展和操作XAML。

利用XAML的WPF这种关系,开发人员可以单独的设计漂亮的UI,也许真正的美工会更多的出现。

我们可以把程序逻辑写在单独的文件或者是内联嵌入到XML文件。

   在XAML中使用得最多的XML功能应该有三个:

命名空间、属性和子元素。

   先看一个简单的XAML的例子:

Class="FirstXAML.Window1"

xmlns="

xmlns:

x="

Title="FirstXAML"Height="200"Width="300"

>

   其中的xmlns就是XML中的名字空间,在W3C中xmlns是如下定义的:

   XMLnamespacesprovideasimplemethodforqualifyingelementandattributenamesusedinExtensibleMarkupLanguagedocumentsbyassociatingthemwithnamespacesidentifiedbyURIreferences.

   简单地说就是xmlns提供了一种方法把URI引用的名字空间定义为当前XML文件的元素和属性的默认命名空间。

这里表示当前这个XML文档,也就是我们的XAML文件,它的默认的命名空间就是

   然后是属性和子元素,XML对属性的表示除了可以用Property外,还可以用子元素,在XAML中也是如此,看一个简单的例子:

White

    例子当中就使用了属性和子元素两种方式来指定属性。

其中的Width是直接用属性表示,Background属性是用子元素表示。

在多数时候,但不是所有,你可以自由选择这两种表示方式之一。

   XAML被编译为BAML(BinaryApplicationMarkupLanguage)文件。

通常,BAML文件比XAML更小,编译后的BAML都是Pre-tokenized的,这样在运行时能更快速的加载、分析XAML等等。

这些BAML文件被以资源的形式嵌入到Assembly当中。

同时生成相应的代码(文件名称是**.g.cs或者**.g.vb),这些代码根据XAML元素分别生成命名的Attribute字段。

以及加载BAML的构造函数。

   最后,关于XAML的优点,我附上一点翻译过来的条款,可能更直观。

   XAML除了有标记语言、XML的优点外,还有如下一些优点:

   用XAML设计UI更简单

   XAML比其他的UI设计技术所需编码更少。

   XAML设计的UI方便转移、方便在其他环境提交。

比如在Web或WindowsClient。

   用XAML设计动态UI非常容易

   XAML给UI设计人员带来新的革命,现在所有的设计人员不再需要.NET开发的知识同样可以设计UI。

在不远的将来,终端用户可以看到更漂亮的UI。

WPF指南之WPF的结构

【IT168技术文档】

   WPF进入我们的生活已经有一段时间。

个人认为在UI的实践中,用户需要的是易于操作的,更加绚丽的界面。

这两个应该是最基本、也是最重要的宗旨。

而对于开发人员就是要用最简单的方法开发出尽可能漂亮的界面,并且效率也不能太差。

除了在一些Web开发和特殊的应用中,很少有开发组配备单独的美工,至少目前是这样吧!

根据自己目前对WPF的了解程度,感觉WPF在其中某些方面确实有超强的震撼力。

   客观上讲,Vista操作系统确实给我们带来了无可比拟的视觉效果。

我自己深有体会,在近2个月的时间里每天都是在Vista下的开发,回家后看到XP系统,始终有些不爽的感觉。

   WPF可以认为是MS利用原有.NET框架的一些特色,加上DirextX的产物。

从下图的WPF组件中,我们可以看出最底层仍然是一些内核API。

(以下两张图片都来自互联网。

   其中红色显示的组件是WPF的核心。

Milcore是一个和DirectX交互的非托管组件,非托管代码能带给我们更高效的处理,能更好的和DirextX交互。

WPF的所有显示都是由Dirext完成的。

milcore中一个非常重要的功能就是Composition引擎,这个引擎对效率的要求很高,它的具体作用稍后介绍。

所以milcore放弃了一些CLR的特征来换取效率。

而另外两个红色的组件都是建立在CLR基础之上,利用了.NET的优势。

   至于其中的User32组件有什么作用,偶目前的知道的就是在WPF的某些应用场景中为了某些兼容需要使用User32,其中就有DWM(桌面窗口管理)。

DWM的内容又可以写上一大堆,感兴趣的朋友可以看SDK文档。

   我们除了关心WPF的基本结构外,更重要的是WPF提供了什么功能,请看下图:

 

   图中的每个黄色块都是一种媒体类型。

这就表示WPF可以处理几乎所有的媒体类型:

位图、3D、音频、视频和文本等等。

通过WPF,它集成了现在的GDI/GDI+、D3D/OPENGL以及多媒体的DSHOW等等。

所有的东西都是等同对象,不管的3D还是2D,或者文本。

   结构图中的Animate块贯串了整个的结构,因为在WPF中我们可以对所有的可视内容进行动画操作。

这是非常让人期待的功能。

Animate下面我们再次看到了Composition引擎,前面提到过它是位于milcore组件中。

开发过程中,我们的界面元素功能有多种,比如图片,视频等等,最后显示到窗口的内容可以认为只是一张图片(准确说是Surface)。

这个引擎的作用就是合成这些图片和视频元素最后进行提交显示。

WPF的数据处理

【IT168技术文档】

   数据绑定,这是WPF提供的一个真正的优点。

除了可以用在传统的绑定环境中,数据绑定已经被扩展应用到控件属性上。

学习应用数据绑定,也能真正的体现XAML的好处。

到底什么是数据绑定呢?

也许你从字面上已经理解的很不错了。

通过数据绑定,我们在应用程序UI和程序逻辑之间建立了一种联系。

正常建立绑定后,在数据的值发生改变后,绑定到数据的元素将自动更新、体现出数据的变化。

   同样,我们先看几个相关的知识点:

   1、DataContext属性。

设置DataContext属性,其实就是指定数据上下文。

那么数据上下文又是什么呢?

又是一个新的概念:

数据上下文允许元素从它的父元素继承数据绑定的数据源。

很简单,在某个元素的DataContext中指定的值,那么在这个元素的子元素也可以使用。

注意,如果我们修改了FrameworkElement或者FrameworkContentElement元素的DataContext属性,那么元素将不再继承DataContext值。

也就是说新设置的属性值将覆盖父元素的设置。

如何设置DataContext属性,稍后说明。

   2、数据源的种类。

也许,WPF提供的数据绑定只是实现了一项普通的功能而已,但是,WPF中所支持的多种数据源使得它的数据绑定功能将更加强大。

现在,WPF支持如下四种绑定源:

   

(1)、任意的CLR对象:

数据源可以是CLR对象的属性、子属性以及Indexers。

对于这种类型的绑定源,WPF采用两种方式来获取属性值:

A)、反射(Reflection);B)、CustomTypeDescriptor,如果对象实现了ICustomTypeDescriptor,绑定将使用这个接口来获取属性值。

   

(2)、XML结点:

数据源可以是XML文件片断。

也可以是XMLDataProvi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1