| 本條目存在以下問題,請協助 改善本條目或在 討論頁針對議題發表看法。
| 此條目需要补充更多来源。 (2020年10月20日) 请协助補充多方面可靠来源以改善这篇条目,无法查证的内容可能會因為异议提出而被移除。 致使用者:请搜索一下条目的标题(来源搜索:"Windows Presentation Foundation" — 网页、新闻、书籍、学术、图像),以检查网络上是否存在该主题的更多可靠来源(判定指引)。 |
|
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產生。
- 目標在於統一各種顯示圖形。
- Windows可以透過Direct3D來減輕在繪圖任務上的負荷,這項技術乃基於電腦顯示卡的繪圖處理單元(Graphics Processing Unit)。
- 支援向量繪圖(vector graphic)。
- 支援3D透視圖並且影響2D應用程式。
佈署[编辑]
- 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字型樣式。
数据绑定[编辑]
数据绑定是在应用 UI 与其显示的数据之间建立连接的过程。 如果绑定具有正确的设置,并且数据提供适当的通知,则在数据更改其值时,绑定到该数据的元素会自动反映更改。 数据绑定还意味着,如果元素中数据的外部表示形式发生更改,则基础数据可以自动进行更新以反映更改。 例如,如果用户编辑 TextBox 元素中的值,则基础数据值会自动更新以反映该更改。
数据绑定的典型用法是将服务器或本地配置数据放置到窗体或其他 UI 控件中。 此概念在 WPF 中得到扩展,包括将大量属性绑定到不同类型的数据源。 在 WPF 中,元素的依赖属性可以绑定到 .NET 对象(包括 ADO.NET 对象或与 Web 服务和 Web 属性关联的对象)和 XML 数据。数据绑定的方式一共有四种:
- 通过 OneWay 绑定,对源属性的更改会自动更新目标属性,但对目标属性的更改不会传播回源属性。 如果绑定的控件为隐式只读,则此类型的绑定适用。 例如,可能会绑定到股票行情自动收录器这样的源,也可能目标属性没有用于进行更改的控件接口(例如表的数据绑定背景色)。 如果无需监视目标属性的更改,则使用 OneWay 绑定模式可避免 TwoWay 绑定模式的系统开销。
- 通过 TwoWay 绑定,更改源属性或目标属性时会自动更新另一方。 此类型的绑定适用于可编辑窗体或其他完全交互式 UI 方案。 大多数属性默认为 OneWay 绑定,但某些依赖属性(通常为用户可编辑控件的属性,例如 TextBox.Text 和 CheckBox.IsChecked)默认为 TwoWay 绑定。 用于确定依赖属性绑定在默认情况下是单向还是双向的编程方法是:使用 DependencyProperty.GetMetadata 获取属性元数据,然后检查 FrameworkPropertyMetadata.BindsTwoWayByDefault 属性的布尔值。
- OneWayToSource 绑定与 OneWay 绑定相反;当目标属性更改时,它会更新源属性。 一个示例方案是只需要从 UI 重新计算源值的情况。
- OneTime 绑定未在图中显示,该绑定会使源属性初始化目标属性,但不传播后续更改。 如果数据上下文发生更改,或者数据上下文中的对象发生更改,则更改不会在目标属性中反映。 如果适合使用当前状态的快照或数据实际为静态数据,则此类型的绑定适合。 如果你想使用源属性中的某个值来初始化目标属性,且提前不知道数据上下文,则此类型的绑定也有用。 此模式实质上是 OneWay 绑定的一种简化形式,它在源值不更改的情况下提供更好的性能
数据绑定在展示層並無太大負擔。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[编辑]
主条目:Silverlight
WPF/E發展初期為微軟計畫將WPF推向各平台的計畫,目前此計畫已經被發展成為Silverlight技術。
WPF應用程式[编辑]
WPF是下一代圖形API在桌面上的延伸。以WPF撰寫應用程式,具有更高的視覺品質。下表列出微軟自家的產品或是第三協力廠商的主力產品:
主条目:List of WPF applications
- 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
|
参考資料[编辑]
外部链接[编辑]
.NET |
|---|
| | 实现 |
- .NET(.NET CORE) 3
- .NET框架
- Mono
- Compact Framework
- Micro Framework
- Silverlight
- SSCLI
- DotGNU(Portable.NET)
|
|---|
| | 架構 |
- 基礎類別庫
- 共同語言執行期元件
- 程序碼存取安全性
- 組件
- 中介資料
- COM互通性
- .NET標準
|
|---|
| | 共同語言基礎架構 |
- 共同語言基礎架構(CLI)
- 共同型別系統
- 共同中介語言
- 虛擬執行系統
|
|---|
| | CLI支持語言 | 共同語言1 |
- C#
- Visual Basic .NET
- C++/CLI(Managed)
- F#
- J#
- JScript .NET
- PowerShell
|
|---|
| 其他語言2 |
- Axum
- A#
- Boo
- Oxygene
- IronLisp
- IronPython
- IronRuby
- Nemerle
- Phalanger
- P#
|
|---|
|
|---|
| | Core家族3 |
- ASP.NET Core (
- Entity Framework Core
- ASP.NET Core MVC )
|
|---|
| | 元件 |
- ADO.NET (Entity Framework
- Data Services)
- ASP.NET (AJAX
- Dynamic Data
- MVC
- Razor)
- ClickOnce
- 动态语言运行时
- LINQ
- MAUI
- Parallel FX Library (PLINQ
- TPL)
- WCF
- Windows Forms
- WPF
- Windows CardSpace
- WF(WWF)
- Remoting
- XAML
|
|---|
| | 比較 |
- C#与Java
- C#与Visual Basic .NET
- Java与.NET平台
|
|---|
| | 即將推出 | |
|---|
| 1微软在Visual Studio或.NET Framework中提供了或者将提供支持的语言 2被多數使用者使用,且非教學或研究型的語言。 3具有跨平台(Windows, Mac OSX, Linux)能力的開發框架。 |
|