Windows Presentation Foundation(WPF)是美国微软公司推出.NET Framework 3.0及以后版本的组成部分之一,它是一套基于XML、.NET Framework、向量绘图技术的展示层开发框架,微软视其为下一代用户界面技术,广泛被用于Windows Vista的界面开发。其早期开发阶段的代号为“Avalon”[1]。
WPF使用一种新的XAML(eXtensible Application Markup Language)语言来开发界面。同时WPF自带MVVM(Model-ViewModel-View)框架,这种设计模式将把界面开发以及后台逻辑很好的分开,降低了耦合度,使用户界面设计师与程序开发者能更好的合作,降低维护和更新的成本。
WPF/E是WPF的子集合,全名是:Windows Presentation Foundation Everywhere。在基于XAML与JavaScript之下,可跨越各种平台,目前WPF/E已演化为Microsoft Silverlight,担负微软在丰富互联网应用程序领域,并正面与Adobe Flash竞争的产品。
特征
WPF部分之特征如下:
绘图服务
- 所有的图形皆可由Direct3D产生。
布署
- WPF不仅仅是创建传统的独立程序(standalone applications)。其部署方式可分成两类:standalone与XAML Browser Applications(XBAP)观点。这些布署方式在程序的撰写上大致类似。
- 独立程序之安装方式可以借由ClickOnce或微软安装器(MSI)完成。独立程序可被视为完全信任(full trust)具有完全访问系统资源的优点。
- XAML Browser Application(XBAPs)是一种寄宿于网页浏览器上的程序,像是Internet Explorer。寄宿的程序可获取部分信任(partial trust)的沙箱(sandbox)环境之下,且无法获取完整的系统资源,WPF的功能亦无法完全发挥。寄宿的环境必须有意地防卫恶意的代码。从网页上执行XBAP(读音"ex-bap")必须是毫无破绽的(没有安全性或安装提示)。虽然这样的寄宿程序在感观上与传统微软的DLL(out of process)有相异处。
互操作性
- WPF可与Win32互相操作:经由主导(hosting)机制,可以在Win32码之下使用Windows Presentation Foundation,或是在Windows Presentation Foundation环境下使用Win32代码[2]。
- Windows Forms的互操作性亦可利用
ElementHost
(继承自System.Windows.Forms.ContainerControl)以及WindowsFormsHost
(继承自System.Windows.Forms.Integration)等类别达成,同时提供了Host Avalon Element的能力。
媒体播放
- WPF针对2D图形提供形状基元(shape primitives),内置笔刷(brushes)、画笔(pens)、几何(geometries),与变形(transforms)。
- WPF以Direct3D提供完整的3D功能。但是,WPF提供更完整的集成性在于用户界面上(UI)、文件(documents),与媒体(media)。这使得尽可以实现3D UI, 3D文件,和3D媒体。
- 支持了大量的图帧式(image formats)。
- WPF支持大量影音格式,如:WMV,MPEG以及某些AVI档。
- WPF支持以时间为基础的动画效果,不同于以帧为基础的处理方式。如此动画的速度与系统性能就不会有所关连。
- 文件的呈现支持ClearType,这提供一种次像素(sub-pixel)定位功能,强化其自然风格。WPF同时支持OpenType字体样式。
数据链接
- WPF有内置资料服务结合,可以让应用程序发展者在应用程序内链接并处理资料。一共有三种资料链接方式:
- one time:客户端(client)必须忽略服务端(server)的更新动作。
- one way:客户端仅被准许读取资料(read-only)。
- two way:客户端可读取并读进服务端。
- 资料链接在展示层并无太大负担。WPF提供有资料模板(data templates)来控制这些资料。
用户界面
- WPF提供了内置组件控件集合,包括有按钮(button)、菜单(menu)、列表盒(list box)等。
- WPF的逻辑层与外观展示层已形成强力的分离模式。
- 组件的外貌样品可以被完全改写。
文件
对OpenType的支持包括:
- 合字(Ligatures)
- 旧式数字(Old-style numerals,for example, parts of the glyph hang below the text baseline)
- 花体字(Swash)
- 分数形式(Fractions)
- 上标及下标
- 小型大写字母
工具
在以往Win32应用程序发展时,绝大多数的工作都由开发人员(Developer)来处理,美术设计人员(Designer)可以涉入的相当有限,而且在Win32 API时代,要在用户界面中实现特效的话,都需要撰写大量的代码才可以做到。
在WPF中,因为大多数的用户界面元素都可以利用XAML来宣告,因此微软试着要将Designer和Developer结合在一起,如此可以让Designer可以充份发挥,并且Developer也不用伤脑筋在外观设计上,微软的Designer工具为Microsoft Expression产品集,其中的Expression Blend即为设计WPF应用程序的设计工具,它也可以用来设计Silverlight程序。
开发人员仍然可以使用Visual Studio来开发WPF应用程序,在Visual Studio中内含WPF Designer可供开发人员使用。
WPF/E
WPF/E发展初期为微软项目将WPF推向各平台的项目,目前此项目已经被发展成为Silverlight技术。
WPF应用程序
WPF是下一代图形API在桌面上的延伸。以WPF撰写应用程序,具有更高的视觉质量。下表列出微软自家的产品或是第三协力厂商的主力产品:
- Microsoft Visual Studio 2010
- Microsoft Expression Design
- Microsoft Expression Blend
- Yahoo! Messenger
- New York Times Reader
- Blu
- 腾讯QQ概念版(只能在Windows 7上使用)[3]
发行历史
系列 | 版本 | 发布日期 | 重要变更/事项 | 一同发布的产品 |
---|---|---|---|---|
3 | 3.0 | 2006年11月 | - | - |
3.5 | 2007年11月 | - | - | |
3.5 SP1 | 2008年8月 | - | - | |
4 | 4.0 | 2010年4月 | - | - |
4.5 | 2012年8月 | - | - | |
4.5.1 | 2013年10月 | - | - | |
4.52 | 2014年5月 | - | - | |
4.6 | 2015年7月 | 高清晰度 (High Dots Per Inch; HDPI) 改善;触控行为焦点 (Touch) 改善;程序子视窗透明 (Transparent child window) 支持 | Visual Studio 2015 |
参考资料
- ↑ Gharighi, A. WPF ("Avalon") Demo 1. CodeProject.com. CodeProject. 2006-05-02 [2013-08-22].
- ↑ WPF and Win32 Interoperation Overview
- ↑ QQ实验室
外部链接
- - .Net Framework 3.0官方社区(英文)
- The Windows Presentation Foundation community portal—The WPF section of the .NET Framework 3.0 community site.
- MSDN Windows Presentation Foundation SDK—Software Development Kit for WPF.
- WPFwiki.org—The largest WPF FAQ question and answer repository & Wiki.
- Getting Started (WPF)—Roadmap to information for developers new to WPF.
- WPF SDK Blog—Active blog maintained by the WPF SDK team.
- Windows Presentation Foundation Unleashed—The first WPF book to market, written by the lead developers Adam Nathan。
- Essential Windows Presentation Foundation—An online WPF tutorial and reference, written by Chris Anderson。
- Microsoft Expression Blend—Visual tool for creating Windows Presentation Foundation applications.
- wpf made simple—Provides info/samples on WPF.
- XAML.net Information on XAML and XBAPs, the Windows Presentation Foundation (WPF), .NET Framework 3.0 and Windows Vista]]。
- A Guided Tour of Windows Presentation Foundation—Microsoft's overview of Windows Presentation Foundation.
- Windows Presentation Foundation Security Sandbox—An overview of the sandbox in which WPF browser applications run.
- MSDN Forums for Windows Presentation Foundation—Active discussion forum for WPF developers.
- WPF/E Google Group—Discussion group and list of examples.
- Microsoft goes cross-platform with WPF/E—WPF/E explained in an interview with Microsoft's Director of Developer Tools.
- More than meets the eye in Microsoft's plans—News.com's article on WPF/E
- WPF page on NetFXGuide.com
- A Five Mile Overview of WPF—A high-level overview of WPF for software developers.
- xbap.org—Comprehensive information on XBAP applications.
- DirectX 10 Wiki - Wiki covering WPF and DirectX 10 Tutorials, Samples, Effect, News.
- 我用43吋屏幕 各种排版错误 - 在高清晰度下,WPF的排版会错误