Windows Presentation Foundation
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() |
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字型樣式。
資料繫結
資料繫結是在應用 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
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]. (原始內容存檔於2021-07-16).
- ^ WPF and Win32 Interoperation Overview. [2007-04-03]. (原始內容存檔於2008-02-06).
- ^ QQ实验室. [2012-06-16]. (原始內容存檔於2022-04-18).
外部連結
- - .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的排版會錯誤
|
|