複製鏈接
請複製以下鏈接發送給好友

WPF

鎖定
WPF(Windows Presentation Foundation)是微軟推出的基於Windows 的用户界面框架,屬於.NET Framework 3.0的一部分。它提供了統一的編程模型、語言和框架,真正做到了分離界面設計人員與開發人員的工作;同時它提供了全新的多媒體交互用户圖形界面
中文名
Windows呈現基礎
外文名
Windows Presentation Foundation
類    型
圖形系統

WPF定義

WPF 為Windows Presentation Foundation的首字母縮寫 ,中文譯為“Windows呈現基礎”,其原來代號為“Avalon”,因與“我佩服”拼音首字母組合一樣,國內有人調侃地稱之為“我佩服”。由 .NET Framework 3.0 開始引入,與 Windows Communication Foundation及 Windows Workflow Foundation並行為新一代 Windows操作系統以及 WinFX 的三個重大應用程序開發類庫
WPF WPF
WPF是微軟新一代圖形系統,運行在.NET Framework 3.0及以上版本下,為用户界面、2D/3D 圖形、文檔和媒體提供了統一的描述和操作方法。基於DirectX 9/10技術的WPF不僅帶來了前所未有的3D界面,而且其圖形向量渲染引擎也大大改進了傳統的2D界面,比如Vista中的半透明效果的窗體等都得益於WPF。 程序員在WPF的幫助下,要開發出媲美Mac程序的酷炫界面已不再是遙不可及的奢望。 WPF相對於Windows客户端的開發來説,向前跨出了巨大的一步,它提供了超豐富的.NET UI 框架,集成了矢量圖形,豐富的流動文字支持(flow text support),3D視覺效果和強大無比的控件模型框架。
Windows Presentation Foundation(以前的代號為“Avalon”)是 Microsoft 用於 Windows 的統一顯示子系統,它通過 WinFX 公開。它由顯示引擎和託管代碼框架組成。Windows Presentation Foundation 統一了 Windows 創建、顯示和操作文檔、媒體和用户界面 (UI) 的方式,使開發人員和設計人員可以創建更好的視覺效果、不同的用户體驗。Windows Presentation Foundation 發佈後,Windows XPWindows Server 2003 和以後所有的 Windows操作系統版本都可以使用它。
WPF WPF
WPF是.Net Framework 3.0裏新推出的主打功能之一,加上Vista集成.Net Framework 3.0,改寫Winform時代,可謂是影響巨大!WPF是一套API函數庫,由.Net FrameWork3.0以上版本類庫運行。
WPF是Windows操作系統中一次重大變革,與早期的GDI+/GDI不同。WPF是基於DirectX引擎的,支持GPU硬件加速,在不支持硬件加速時也可以使用軟件繪製。高級別的線程繪製可以提高使用者的體驗。自動識別顯示器分辨率並進行縮放。而Vista就是一個非常典型的例子。 [1] 

WPF特點介紹

程序人員與美工人員明確分工,美工人員可以使用Expression Studio中套裝工具可視化的設計界面。然後交給程序開發組中的XAML就可以。讓程序人員直接套用到開發環境,不需要想頁面怎麼切了。
對於WPF最重要的特色,矢量圖的超強支持 。兼容支持2D繪圖,比如矩形、自定義路徑,位圖等。文字顯示的增強,XPS和消鋸齒。三維強大的支持。包括3D控件及事件,與2D及視頻合併打造更立 體效果。漸變、使用高精確的(ARGB)顏色,支持浮點類型的像素座標。這些對GDI+遠遠不及的。
靈活、易擴展的動畫機制!.Net Framework 3.0類庫提供了強大的基類,只需繼承就可以實現自定義程序使用繪製。接口設計非常直觀,完全面向對象的對象模型。使用對象描述語言XAML。使用開發工具的可視化編輯。
您可以使用任何一種.Net編程語言(C#,VB NET等開發語言)進行開發。XAML主要針對界面的可視化控件描述,成生進會分析成.cs或.vb文件,並最後將編譯為CLR中間運行語言。 [1] 

WPF組成結構

Windows Presentation Foundation 由兩個主要部分組成:引擎和編程框架。
1.Windows Presentation Foundation引擎。Windows Presentation Foundation 引擎統一了開發人員和設計人員體驗文檔、媒體和 UI 的方式,為基於瀏覽器的體驗、基於窗體的應用程序、圖形、視頻、音頻和文檔提供了一個單一的運行時庫。Windows Presentation Foundation 使得應用程序不僅能夠充分利用現代計算機中現有的圖形硬件的全部功能,而且能夠利用硬件將來的進步。例如,Windows Presentation Foundation 的基於矢量的呈現引擎使應用程序可以靈活地利用高 DPI監視器,而無需開發人員或用户進行額外的工作。 同樣,當 Windows Presentation Foundation 檢測到支持硬件加速的視頻卡時,它將利用硬件加速功能。
2.Windows Presentation Foundation 框架。Windows Presentation Foundation 框架為媒體、用户界面設計和文檔提供的解決方案遠遠超過開發人員現在所擁有的。Windows Presentation Foundation 的設計考慮了可擴展性,使開發人員可以完全在 Windows Presentation Foundation引擎的基礎上創建自己的控件,也可以通過對現有 Windows Presentation Foundation 控件進行再分類來創建自己的控件。Windows Presentation Foundation 框架的核心是用於形狀、文檔、圖像、視頻、動畫、三維以及用於放置控件和內容的面板的一系列控件。這些“自有控件”為開發下一代用户體驗提供了構造塊。
Microsoft 在引入 Windows Presentation Foundation 的同時,還引入了 XAML,這是一種公開表示 Windows應用程序用户界面的標記語言,可使開發人員和設計人員用來構建和重用 UI 的工具更加豐富。對於 Web 開發人員,XAML 提供了熟悉的 UI 説明模式。XAML 還使 UI 設計從基礎代碼中分離出來,從而使開發人員和設計人員之間的合作更加緊密。

WPF選擇理由

為什麼選擇 Windows Presentation Foundation?
對於企業:Windows Presentation Foundation 實現了改進的客户關係和不同的應用程序。通過提供能夠快速提供更好的視覺效果、獨特的用户體驗的技術,來建立與客户的密切關係,使企業可以建立穩定的數字客户關係和獨特的品牌化機會。而且,由於 Windows Presentation Foundation 是窗體、文檔、視頻、三維以及其他功能的綜合,因此企業可以創建持久的用户體驗解決方案,並集成到客户的日常活動中。
WPF WPF
對於開發人員和設計人員:Windows Presentation Foundation 提供了統一的 UI 平台,因此他們只需學習一個模式,就可以獲得無限可能的 UI 體驗。
對於 .NET開發人員:其框架是熟悉的,並且它最終將減少提供最佳用户體驗和通信邏輯所需的代碼行數。
對於設計人員:Windows Presentation Foundation 提供的平台可消除內容、媒體和應用程序之間的邊界。最重要的是,Windows Presentation Foundation 可以使開發人員和設計人員同步緊密地合作來快速提供不同的連通體驗。

WPF響應程度

國內即時通訊領導商騰訊Tencent曾經發布過一款基於WPF的QQ 概念版(QQ 概念版):QQ 概念版是騰訊首款NUI(自然用户交互)產品,全面實現了多點觸摸操作。在實現IM的基礎功能外,QQ概念版還推出了動感相框、動態背景、多Tab聊天窗口、3D交互、矢量界面、桌面好友等一系列新功能、新體驗以及Windows7的重要新特性。

WPF運行環境

WPF可以運行在三種環境下面,如下:
1、 WPF桌面程序,此類型沒有任何限制,可以是Windows可執行程序也可以是DLL動態鏈接庫
只需要.Net Framework 3.0以上版本支持即可!
2、 RIA分佈式環境,服務器與客户端瀏覽器下載使用ActiveX插件方式解釋執行的。微軟更名為Silverlight,由於安全原因,微軟提取精簡版.Net Framework到Silverlight中獨立運行,精簡了很多類庫。
3、瀏覽器承載的應用程序(稱為 XAML 瀏覽器應用程序 (XBAP)),您可以創建能夠使用超鏈接(Hyperlink 類)導航的頁面 (Page) 和頁函數 (PageFunction(Of (T)))。 [1] 

WPF服務和支持

隨着Vista RTM的發佈,微軟新一輪的技術推廣已經開始。其實在此之前,WPF已經有很大的推廣,因為CTP版本已經發布了有一段日子了。當然很多開發人員主要以技術研究為主,也有少數公司已經開始從事基於WPF的產品研發工作。
WPF的最新版本為 .NET 8.0.1 [3]  ,你可以從dotnet官網上免費下載。

WPF前景分析

WPF其實不僅僅是圖形引擎而已,它將給Windows應用程序的開發帶來一次革命,因為新的架構提供了一種全新的開發模式。當然對於普通用户而言,最直觀的就是界面越來越漂亮,看起來越來越舒服了;但對於開發人員而言,界面顯示和代碼將更好的得到分離,這與從前的桌面應用程序開發有很多不同(界面設置和代碼是融合在一起的),這是比較具有革命性的改變之一。
還有就是桌面應用程序和瀏覽器應用程序的融合,根據ms的承諾,正在開發中的WPF/E,即WPF Everywhere版本,將為基於WPF的應用程序提供全面的瀏覽器支持,這意味着未來開發出的應用程序將可以基於瀏覽器在不同的操作系統上運行,根據WPF/E開發組的定義,WPF/E仍然是WPF的子集,而不是後繼版本。總體而言,WPF的前景應該是一片光明。

WPF控件

WPF實質

先從UI上分析,UI的功能是讓用户觀察和操作數據,為了能顯示數據和響應用户的操作通知程序(通過事件來通知,如何處理事件又是一系列的算法),所以控件就是顯示數據和響應用户操作的UI元素,也即:控件就是數據和行為的載體。 [2] 

WPF數據驅動UI

什麼是數據驅動UI呢?我們知道傳統的GUI界面都是由windows消息通過事件傳遞給程序,程序根據不同的操作來表達出不同的數據體現在UI界面上,這樣數據在某種程度上來説,受到很大的限制。WPF中是數據驅動UI,數據是核心,處於主動的,UI從屬於數據並表達數據,是被動的。WPF數據第一,控件第二。 [2] 

WPF分類

雖然控件沒有數據重要,但是還是比較重要的,畢竟是門面啊,只是在數據面前,它比較"有禮貌"。控件有很多,但是如果仔細去分析,也是有規律可循的,根據其作用,我們可以把控件分為6類:
  • 佈局控件:是可以容納多個控件或者嵌套其他佈局的控件,用於在UI上組織和排列控件。其父類為Panel。
  • 內容控件:只能容納一個控件或者佈局控件作為他的內容。所以經常藉助佈局控件來規劃其內容。其父類為ContentControl。
  • 帶標題內容控件:相當於一個內容控件,但是可以加一個標題,標題部分也可以容納一個控件或者佈局,其父類為HeaderedContentControl。
  • 條目控件:可以顯示一列數據,一般情況下,是數據的類型是相同的。其共同的基類為ItemsControl。
  • 帶標題的條目控件:和上面的帶標題內容控件類同,其基類為HeaderdeItemsControl。
  • 特殊內容控件:這類控件比較獨立,但也比較常用,如TextBox,TextBlock,Image等。 [2] 
當這些控件不能夠滿足需求的時候,也可以從受信任的來源下載控件,並通過添加引用來導入自定義控件。支持WPF的第三方控件有:ComponentOne StudioActiveReportsvisifireStimulsoft Report等。
參考資料