`

WPF基础篇 作者:IT168 静水流深 2008-01-02

阅读更多
  在过去的一年多时间中,微软公司一直在大力推广Vista操作系统。作为开发人员而言,自然会想到开发适应于Vista的下一代Windows应用程序。这注定要用到本系列文章所关注的WPF(Windows Presentation Foundation)。本文作为首篇文章,重点向读者介绍WPF的基本概念,内容包括WPF的出处和形成原因,WPF基本概念和功能,以及对于初学者的学习建议等。希望通过这些内容,能够使读者建立对WPF的初步了解,从而为阅读后续有关WPF技术的文章奠定理论基础。 

1. 出处和形成原因 
2006年底,微软公司发布.NET Framework 3.0。作为微软精心打造的新一代.NET架构,.NET Framework 3.0默认内置于Vista操作系统中,并担当最主要的应用程序接口。由此可见.NET Framework 3.0与Vista的关系是何等的紧密。 
.NET Framework 3.0以2.0版本为基础,同时增加四个重要组件:Windows Presentation Foundation(WPF),Windows Workflow Foundation(WWF)、Windows Communication Foundation(WCF)和Windows CardSpace(WCS)。这些组件是.NET Framework 3.0最具价值的部分。如图1显示了.NET Framework 3.0的组成: 


    如图1所示,如果分别使用一句话说明.NET Framework 3.0的各个组成部分,那么可以这样来描述:
   .NET Framework 2.0是Windows应用程序的通用基础。 
   Windows Workflow Foundation用于支持基于工作流的应用程序。 
   Windows Communication Foundation用于支持面向服务的应用程序。 
   Windows CardSpace提供一致的数字标识用户控件。 
   Windows Presentation Foundation用于为不同用户界面提供统一的显示系统。 
   虽然以上所述的前4项都非常重要,但是鉴于本文主题,还是建议读者多关注有关WPF的说明。虽然可能读者无法真正理解句子的含义,但是至少会产生一个显而易见的疑惑:为什么要在.NET 3.0中使用WPF统一用户界面的呈现呢? 

    这答案很简单:使用WPF统一用户界面的呈现,解决现代应用程序中创建用户界面所遇到的挑战。

    一直以来,Windows应用程序用户界面的功能都是以不同方式提供的。例如,开发人员使用WinForms创建Windows GUI,使用HTML、Java小程序或JavaScript代码创建运行在浏览器中的Web页面。很明显,开发人员面临着巨大的挑战:为实现不同类型的应用程序,开发人员必须学习多种开发技术和方法。如果能够有一种技术,可以实现为不同的客户端创建一致的用户界面,将是非常理想的方案。 

    WPF就是为解决这一难题而设计。简单而言,可以总结为以下三点:(1)WPF为所有的这些用户界面提供一致的技术基础,从而大幅简化开发人员的工作。(2)WPF采用更为先进的方法,支持视频、动画、二维或三维图形以及各种类型的文档,从而可以让用户以全新的方式处理信息。(3)WPF还为桌面客户端和浏览器客户端提供了通用基础,这大大简化了二者的应用程序开发工作。 

    总而言之,通过WPF,.NET Framework 3.0提供了一种比较完整和一致的解决方案,以用于应对用户界面方面的难题。最终的目标是使构建用户界面的相关人员(包括开发人员和设计人员)能够更加有效的工作。 

    在了解了WPF的出处和形成原因之后,下面让我们真正认识一下什么是WPF,以及WPF能为开发做些什么。 
基本概念和功能 

   WPF是一个针对Windows的统一的全新显示系统,该系统专门针对.NET而设计,其中主要包括一个显示引擎和一组受管类。以上对于WPF概念的解释显然有些简单和抽象,不过读者可首先从以下三个方面来加深了解: 

  (1)WPF为用户界面、2D/3D图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,例如Vista中的半透明效果的窗体等都得益于WPF。 

   (2)XAML是微软为构建下一代应用程序界面而创建的,新的基于XML的描述性语言,它可对WPF程序的所有界面元素进行定制,从而构成具有WPF风格的界面,并最终形成一个组织良好的XML文档。利用XAML可使得描述代码和程序逻辑代码得以分开(有些类似ASP.NET),从而提高开发效率并有利于团队开发。 

   (3)WPF具有多种优点。例如使用统一模型,广泛支持多种媒体类型的集成;丰富的自定义功能;简单的部署方法;革命性的声明性编程模式;支持硬件加速等。

    WPF支持的功能众多,主要包括: 
    基本用户界面:这是WPF最基本,最重要的功能。利用WPF提供的面板和控件,可实现应用程序的基本布局和呈现等。 
文档:WPF应用程序可以使用XAML的FixedDocument标记来显示XPS文档。也可以使用FlowDocument标记来显示流文档。流文档与传统的屏幕文档类似,能够让用户滚动浏览其内容。另外,开发人员通过设置此标记的不同属性,可以使文档更适应其环境。例如,文档可以每次显示一页,这样读者就不必上下滚动页面了。WPF还能够根据显示文档的窗口大小来自动确定应该把文档拆分成多少列,其目的是尽量提高屏幕上文档的可读性。 

    图形:WPF还支持创建二维和三维矢量图形。对于二维作业,WPF可提供标准抽象,例如形状、画笔和绘图笔,同时还允许三维图形定义模型,以用于指定光线和摄像机位置信息。与早期技术(例如Windows Forms 需要依赖于GDI+才能绘制图形)不同的是,WPF图形并不是使用开发人员所必须了解的单独一组概念来进行分区的。相反,用于图形的XAML元素能够与那些用户界面其他方面的元素自然组合。按钮可带有图形内容,文本和图形可以组合,以及其他更多功能。 

    图像:使用XAML的图像标记,WPF 应用程序可以显示不同格式的图形,包括JPEG、GIF以及其他格式。WPF依靠Windows Imaging Component(WIC)为编解码器以及显示和存储图像的软件提供标准框架。在WPF中,通常图像元素可以与其他元素组合,能够让按钮显示图像而不是简单的文本标签。 

    媒体:WPF应用程序可以使用MediaElement标记来显示不同格式的视频和音频,包括 WMV、AVI和MPEG。同样,此元素也可与其他XAML元素相组合,例如使三维立方体的所有侧面上都显示视频。 

    动画:WPF提供动态显示绝大部分用户界面的内置支持。例如,放大和缩小圆圈、顺利地更改按钮大小。应用程序还可以定义包含时间线的情节提要,允许调整动画的发生顺序。 

    数据绑定:由于许多 WPF 应用程序都需要显示数据,因此提供将数据映射到用户界面元素的自动支持功能是很有帮助的。WPF可为包含在对象和其他源中的信息提供此类数据绑定。WPF数据绑定还允许在显示数据前对其进行排序和筛选。 

3. 学习建议 

    目前,关注和学习WPF技术的朋友们越来越多,但是由于种种原因,国内读者关注的中文资料比较少见,所以不得不阅读英文资料,这实在是无奈之举。下面笔者将结合自身学习WPF技术的经验,为各位读者提供一些学习建议,目的是希望帮助各位读者少走弯路。 

    首先,初学者需要对WPF技术建立大致了解,例如了解WPF与.NET 3.0之间的关系、引入WPF的原因、WPF的功能、系统框架、开发环境等。为此,读者可以通过搜索引擎查找相关内容,或者采用阅读本系列文章等方法来获取这些知识。 

    然后,初学者将进入初级内容的学习阶段,包括了解开发WPF应用程序的步骤,布局、控件使用、数据绑定、图形图像、部署等等。对于这些内容的学习,建议初学者多多阅读MSDN。在阅读文档的同时,一定要加强实践,多编码多练习,才能更好的理解知识,打牢基础。 

    最后,建议读者深入学习和研究一些WPF的典型实例,例如实例Family Show。读者可在http://www.vertigo.com/familyshow.aspx找到相关的资料。New York Times Reader也是很有名的WPF实例。有关它的详细信息可以参考:http://firstlook.nytimes.com/。通过学习研究这些典型实例,初学者将得到飞速的提高。 

小结 
    通过本文的介绍,相信读者已经了解了一些WPF技术的基础知识。实际上,WPF不仅是一个复杂的图形引擎,而更重要的是WPF将为开发Windows应用程序掀开新的篇章。尤其是使用标记构建界面,使用代码编写逻辑的特点,将彻底打破过去Windows程序开发人员所固守的思维概念。相信随着微软公司在操作系统,市场宣传,以及广大业界支持的条件下,WPF必将迎来广阔的前景。 

    在随后的系列文章中,读者将逐渐深入了解WPF技术的相关知识,例如WPF系统架构,类层次,开发环境等。 
分享到:
评论

相关推荐

    C# Wpf 设计的游戏:爱因斯坦的超级问题 -- 谁养鱼

    WPF设计的界面实在让人惊叹,有兴趣可以下载看看,包括源码和可执行程序,需要.NET3.0运行库以上支持,程序特点在于界面,代码部分没有刻意处理,包括对自定义标题栏的处理,开发工具:Visual C# 2008 Express,...

    Wpf设计的游戏:爱因斯特的超级问题--谁养鱼

    自己用Wpf仿照Flash做得小游戏,Wpf做得界面真是让人惊叹,有兴趣可以下载看看,包括源码和可执行程序,程序中设计了自定义标题栏,以及对标题拖拉等处理,由于游戏比较简单,代码部分没有经过过多处理。运行程序...

    微软文库:Get started (WPF)-43

    微软文库:Get started (WPF)-43 Article • 03/05/2022 Windows Presentation Foundation (WPF) is a UI framework that creates desktop client applications. The WPF development platform supports a broad set...

    WPF 高级.pdf

    ### WPF高级编程知识点 #### WPF体系结构 WPF(Windows Presentation Foundation)是一个由Microsoft提供的用户界面框架,主要用于构建Windows客户端应用程序。WPF提供了一种全新的方式来创建丰富的用户体验,支持...

    C# 电子白板软件源码(WinForm & WPF)

    C# 实现的电子白板软件,包括 WinForm 和 WPF 两个版本的项目,其中 WinForm 版本使用的是 GDI+,WPF 版本使用的是 DrawingVisual。使用了面向对象的设计思维,还有一些项目实践的经验体现,值得新手学习。代码实现...

    Pro WPF in C# 2008: Windows Presentation Foundation with .NET 3.5, 2nd Edition

    Pro WPF in C# 2008: Windows Presentation Foundation with .NET 3.5, 2nd Edition Pro WPF in C# 2008: Windows Presentation Foundation with .NET 3.5, 2nd EditionProduct Description The Microsoft ...

    Wpf-glTF-testing.zip

    总结来说,“Wpf-glTF-testing.zip”提供了一个基础的glTF模型查看器,利用WPF的3D渲染能力,对于学习glTF格式、3D图形编程以及WPF应用开发都有一定的参考价值。这个项目展示了如何在C#和.NET环境中处理3D内容,对...

    WPF开发教程 ----WPF C# 编程 界面开发(很不错)

    WPF开发教程.rar 目录 WPF基础入门 3 1. WPF基础之体系结构 3 2. WPF基础之XAML 9 3. WPF基础之基元素 23 4. WPF基础之属性系统 26 5. WPF基础之路由事件 33 6. WPF基础之布局系统 46 7. WPF基础之样式设置和模板化...

    WPF编程基础WPF基础

    **WPF编程基础WPF基础** Windows Presentation Foundation(WPF),是微软.NET Framework的重要组成部分,为开发者提供了一种全新的构建富客户端应用程序的方式。WPF在2006年随.NET Framework 3.0一同发布,它引入...

    wpf-mvvm-DeskTop-Sample-master_C#_WPF_wpf客户端zfs_

    标题中的“wpf-mvvm-DeskTop-Sample-master”表明这是一个关于WPF(Windows Presentation Foundation)桌面应用程序的示例项目,使用了MVVM(Model-View-ViewModel)设计模式。这个项目是用C#编程语言编写的,面向的...

    《WPF揭秘》源代码

    书名: WPF揭秘 评论星级: 书号: 978-7-115-17604-2 原书名: Windows Presentation Foundation Unleashed 分类: 计算机 >> 程序设计 >> .NET 丛书名: 图灵程序设计丛书 作者: Adam Nathan 译者: 瞿杰 ...

    WPF Carousel 样式Demo 源码

    本篇将深入探讨WPF Carousel样式的Demo源码,帮助开发者理解如何实现这一交互效果。 1. **Carousel 控件的基本概念** Carousel控件允许用户通过水平或垂直滚动来查看多个项目。在WPF中,可以利用ItemsControl和...

    WPF 国际象棋 棋子 ChessProgrammingTest.zip

    WPF 国际象棋 棋子ChessProgrammingTest.zip 要求: You have been provided with a third-party library "ChessLib" which calculates the legal moves a knight can make given a position on an 8 by 8 board. ...

    WPF编程宝典:使用C# 2012和.NET 4.5 第4版 PDF与源码

    1. **WPF基础**:介绍WPF的基本架构,如XAML(Extensible Application Markup Language)的使用,它是WPF设计用户界面的主要工具,允许开发者用XML来声明式地定义UI元素。 2. **控件和布局**:详细讲解WPF中的各种...

    WPF优秀项目及源码 wosk-94877

    WPF优秀项目及源码 wosk-94877WPF优秀项目及源码 wosk-94877WPF优秀项目及源码 wosk-94877WPF优秀项目及源码 wosk-94877WPF优秀项目及源码 wosk-94877WPF优秀项目及源码 wosk-94877WPF优秀项目及源码 wosk-94877WPF...

    Pro WPF in C# 2010: Windows Presentation Foundation in .NET 4

    Microsoft's Windows Presentation Foundation (WPF) provides the foundation for building applications and high-quality user experiences for the Windows operating system. It blends the application user ...

    通用WPF主题控件包rubyer-wpf-master

    通用WPF主题控件包rubyer-wpf-master是一款专为Windows Presentation Foundation (WPF) 应用程序设计的开源UI框架。它提供了丰富的主题和控件,旨在帮助开发者快速构建美观且用户友好的应用程序界面。在2.0.0版本中...

    WPF高级编程源代码

    Professional WPF Programming: .NET Development with the Windows Presentation Foundation Chris Andrade, Shawn Livermore, Mike Meyers, Scott Van Vliet ISBN: 978-0-470-04180-2 Paperback 480 pages May ...

Global site tag (gtag.js) - Google Analytics