WPF
微軟推出的基於Windows的用戶界面框架
WPF(Windows Presentation Foundation)是微軟推出的基於Windows 的用戶界面框架,屬於.NET Framework 3.0的一部分。它提供了統一的編程模型、語言和框架,真正做到了分離界面設計人員與開發人員的工作;同時它提供了全新的多媒體交互用戶圖形界面。
WPF 為Windows Presentation Foundation的首字母縮寫,中文譯為“Windows呈現基礎”,其原來代號為“Avalon”,因與“我佩服”拼音首字母組合一樣,國內有人調侃地稱之為“我佩服”。由 .NET Framework 3.0 開始引入,與 Windows Communication Foundation及 Windows Workflow Foundation并行為新一代 Windows操作系統以及 WinFX 的三個重大應用程序開發類庫。
WPF
Windows Presentation Foundation(以前的代號為“Avalon”)是 Microsoft 用於 Windows 的統一顯示子系統,它通過 WinFX 公開。它由顯示引擎和託管代碼框架組成。Windows Presentation Foundation 統一了 Windows 創建、顯示和操作文檔、媒體和用戶界面 (UI) 的方式,使開發人員和設計人員可以創建更好的視覺效果、不同的用戶體驗。Windows Presentation Foundation 發布后,Windows XP、Windows Server 2003 和以後所有的 Windows操作系統版本都可以使用它。
WPF
WPF是Windows操作系統中一次重大變革,與早期的GDI+/GDI不同。WPF是基於DirectX引擎的,支持GPU硬體加速,在不支持硬體加速時也可以使用軟體繪製。高級別的線程繪製可以提高使用者的體驗。自動識別顯示器解析度並進行縮放。而Vista就是一個非常典型的例子。
程序人員與美工人員明確分工,美工人員可以使用Expression Studio中套裝工具可視化的設計界面。然後交給程序開發組中的XAML就可以。讓程序人員直接套用到開發環境,不需要想頁面怎麼切了。
對 與WPF最重要的特色,矢量圖的超強支持。兼容支持2D繪圖,比如矩形、自定義路徑,點陣圖等。文字顯示的增強,XPS和消鋸齒。三維強大的支持。包括3D控制項及事件,與2D及視頻合併打造更立 體效果。漸變、使用高精確的(ARGB)顏色,支持浮點類型的像素坐標。這些對GDI+遠遠不及的。
靈活、易擴展的動畫機制!.Net Framework 3.0類庫提供了強大的基類,只需繼承就可以實現自定義程序使用繪製。介面設計非常直觀,完全面向對象的對象模型。使用對象描述語言XAML。使用開發工具的可視化編輯。
您可以使用任何一種.Net編程語言(C#,VB NET等開發語言)進行開發。XAML主要針對界面的可視化控制項描述,成生進會分析成.cs或.vb文件,並最後將編譯為CLR中間運行語言。
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 設計從基礎代碼中分離出來,從而使開發人員和設計人員之間的合作更加緊密。
為什麼選擇 Windows Presentation Foundation?
對於企業:Windows Presentation Foundation 實現了改進的客戶關係和不同的應用程序。通過提供能夠快速提供更好的視覺效果、獨特的用戶體驗的技術,來建立與客戶的密切關係,使企業可以建立穩定的數字客戶關係和獨特的品牌化機會。而且,由於 Windows Presentation Foundation 是窗體、文檔、視頻、三維以及其他功能的綜合,因此企業可以創建持久的用戶體驗解決方案,並集成到客戶的日常活動中。
WPF
對於 .NET開發人員:其框架是熟悉的,並且它最終將減少提供最佳用戶體驗和通信邏輯所需的代碼行數。
對於設計人員:Windows Presentation Foundation 提供的平台可消除內容、媒體和應用程序之間的邊界。最重要的是,Windows Presentation Foundation 可以使開發人員和設計人員同步緊密地合作來快速提供不同的連通體驗。
國內即時通訊領導商騰訊Tencent曾經發布過一款基於WPF的QQ 概念版(QQ 概念版:QQ 概念版是騰訊首款NUI(自然用戶交互)產品,全面實現了多點觸摸操作。在實現IM的基礎功能外,QQ概念版還推出了動感相框、動態背景、多Tab聊天窗口、3D交互、矢量界面、桌面好友等一系列新功能、新體驗以及Windows7的重要新特性。
WPF可以運行在三種環境下面,如下:
1、 WPF桌面程序,此類型沒有任何限制,可以是Windows可執行程序也可以是DLL動態鏈接庫。
只需要.Net Framework 3.0以上版本支持即可!
2、 RIA分散式環境,伺服器與客戶端瀏覽器下載使用ActiveX插件方式解釋執行的。微軟更名為Silverlight,由於安全原因,微軟提取精簡版.Net Framework到Silverlight中獨立運行,精簡了很多類庫。
3、瀏覽器承載的應用程序(稱為 XAML 瀏覽器應用程序 (XBAP)),您可以創建能夠使用超鏈接(Hyperlink 類)導航的頁面 (Page) 和頁函數 (PageFunction(Of (T)))。
隨著Vista RTM的發布,微軟新一輪的技術推廣已經開始。其實在此之前,WPF已經有很大的推廣,因為CTP版本已經發布了有一段日子了。當然很多開發人員主要以技術研究為主,也有少數公司已經開始從事基於WPF的產品研發工作。
目前WPF的最新版本為4.5(對應.net framework 4.5),你可以從msdn上免費下載。
WPF其實不僅僅是圖形引擎而已,它將給Windows應用程序的開發帶來一次革命,因為新的架構提供了一種全新的開發模式。當然對於普通用戶而言,最直觀的就是界面越來越漂亮,看起來越來越舒服了;但對於開發人員而言,界面顯示和代碼將更好的得到分離,這與從前的桌面應用程序開發有很多不同(界面設置和代碼是融合在一起的),這是比較具有革命性的改變之一。
還有就是桌面應用程序和瀏覽器應用程序的融合,根據ms的承諾,正在開發中的WPF/E,即WPF Everywhere版本,將為基於WPF的應用程序提供全面的瀏覽器支持,這意味著未來開發出的應用程序將可以基於瀏覽器在不同的操作系統上運行,根據WPF/E開發組的定義,WPF/E仍然是WPF的子集,而不是後繼版本。總體而言,WPF的前景應該是一片光明。
先從UI上分析,UI的功能是讓用戶觀察和操作數據,為了能顯示數據和響應用戶的操作通知程序(通過事件來通知,如何處理事件又是一系列的演演算法),所以控制項就是顯示數據和響應用戶操作的UI元素,也即:控制項就是數據和行為的載體。
什麼是數據驅動UI呢?我們知道傳統的GUI界面都是由windows消息通過事件傳遞給程序,程序根據不同的操作來表達出不同的數據體現在UI界面上,這樣數據在某種程度上來說,受到很大的限制。WPF中是數據驅動UI,數據是核心,處於主動的,UI從屬於數據並表達數據,是被動的。WPF數據第一,控制項第二。
雖然控制項沒有數據重要,但是還是比較重要的,畢竟是門面啊,只是在數據面前,它比較"有禮貌"。控制項有很多,但是如果仔細去分析,也是有規律可循的,根據其作用,我們可以把控制項分為6類:
布局控制項:是可以容納多個控制項或者嵌套其他布局的控制項,用於在UI上組織和排列控制項。其父類為Panel。
內容控制項:只能容納一個控制項或者布局控制項作為他的內容。所以經常藉助布局控制項來規劃其內容。其父類為ContentControl。
帶標題內容控制項:相當於一個內容控制項,但是可以加一個標題,標題部分也可以容納一個控制項或者布局,其父類為HeaderedContentControl。
條目控制項:可以顯示一列數據,一般情況下,是數據的類型是相同的。其共同的基類為ItemsControl。
帶標題的條目控制項:和上面的帶標題內容控制項類同,其基類為HeaderdeItemsControl。
特殊內容控制項:這類控制項比較獨立,但也比較常用,如TextBox,TextBlock,Image等。
當這些控制項不能夠滿足需求的時候,也可以從受信任的來源下載控制項,並通過添加引用來導入自定義控制項。支持WPF的第三方控制項有:ComponentOne Studio,ActiveReports,visifire,Stimulsoft Report等。