1. 程式人生 > >WPF Step By Step 系列 - 開篇

WPF Step By Step 系列 - 開篇

gpu 查看 這一 order 界面設計 基礎知識 http 對比 快速

WPF 系列包含的內容

  • WPF基礎知識介紹
  • WPF布局介紹
  • WPF控件介紹(包含第三方控件)
  • WPF自定義模板
  • WPF依賴屬性、路由事件
  • WPF的MVVM編程
  • WPF開發框架Prism
  • WPF開發框架WAF
  • WPF開發框架Caliburn

WPF 為什麽我們選擇?

介紹

Windows APIWindows Presentation Foundation (WPF) 是下一代顯示系統,用於生成能帶給用戶震撼視覺體驗的 Windows 客戶端應用程序。使用 WPF,您可以創建廣泛的獨立應用程序以及瀏覽器承載的應用程序。 WPF 的核心是一個與分辨率無關並且基於矢量的呈現引擎,旨在利用現代圖形硬件的優勢。WPF 通過一整套應用程序開發功能擴展了這個核心,這些功能包括可擴展應用程序標記語言 (XAML)、控件、數據綁定、布局、二維和三維圖形、動畫、樣式、模板、文檔、媒體、文本和版式。

相比Winform的優勢

1、WPF所有的操作都不依賴於GDI和GDI+,而是間接依賴於強大的Direct3D,這就意味著通過WPF可以做出以前WinFrom無法想象的視覺效果,包括3D效果的應用程序。目前最新的顯卡GPU已經支持DirectX 11,絢麗的逼真3D效果通過WPF實現也是非常簡單的事情。

2、WPF實現徹底把程序架構,業務邏輯和用戶界面(UI)徹底分開,WPF引擎把XAML描述的UI元素解釋為相應的.NET對象,從而在應用程序創建相應的控件,UI人員和程序人員均可對此控件進行編輯加載,從而實現用戶界面和程序架構的徹底分離,而Winform這一點是做不到的。

WPF具有超強的用戶體驗,簡單便捷的部署方式(易於更新升級),更簡便的編程方式,實現絢麗效果比較簡單的特點。今天越來越多的軟件廠商開始采用WPF作為應用程序開發模式,一些基於WPF開發的桌面應用程序也走進我們的視野,WPF QQ等。與此同時,世界各大控件廠商也紛紛推出了基於WPF的用戶界面控件包,以更加絢麗、簡單、高效的控件模式提供用戶界面解決方案。當我們面對如此多的WPF控件的時候,如何選擇適合自己軟件使用的WPF控件的確是個難題,下面我就4款主流的WPF控件作一些對比介紹,希望對選擇WPF控件有幫助。

開發模式和團隊協作上的改變

winform開發模式:需求->設計->開發(功能與界面設計[根據美工設計的界面效果,通過圖片或者GDI來實現特殊效果])->測試->交付

WPF開發模式: 需求->設計(功能設計與界面設計)->開發(功能開發) 與設計(界面設計[模板和樣式即可實現])->測試->交付

總結:主要是體現在開發和設計階段,將設計與開發人員從原來的設計人員設計後,開發人員需要實現特殊的效果。並且開發人員需要書寫大量的代碼,除了書寫基本的功能代碼還需要書寫界面效果的代碼。WPF通過blend等可以讓界面設計人員設計完的效果轉換為xaml語言,開發人員只需要采用MVVM編程模式,書寫業務邏輯代碼即可,而不要再次跟進界面控件的名稱來進行View的更新。關於綁定,這塊是WPF最有特點的部分之一。

系統設計

winform:我們需要在界面內容書寫調用業務邏輯的相關代碼。這樣,當業務邏輯發生變化,我們需要修改頁面,同時修改界面內的代碼。或者是我們修改業務布局,不修改業務邏輯,這時我們也需要開發人員才可以完成。

WPF: 有了WPF之後,上面的二種情況,則不會那麽復雜了,1、當業務邏輯變化時,只需要修改ViewModel中的相關代碼即可。2、當業務邏輯不發生變化時,任何對界面的修改,都可以讓界面設計人員去完成,這樣才能做到各司其職和協作。

未來發展

微軟未來的發展方向上來說,windows8 的Metro風格的觸摸應用,采用xaml語言進行編程的方式,基本上熟悉WPF的朋友們,上手都沒啥好說的,window phone8上,熟悉WPF的開發人員,轉wp開發也是比較容易的,因為基本的就是語法上的區別,總體來說不會那麽困難。所以說,你掌握了WPF,那麽就等於掌握了一個基礎,未來能夠快速學習新技術的基礎,跟著微軟,就是要不斷的學習。

WPF 也有缺點

WPF的優點很多,缺點也同樣明顯,WPF的UI線程模式,對於不熟悉多線程的朋友,剛開始學習的時候,會有些問題,WPF在想能和運行效率上不如winform,而且,界面效果,如果不會進行界面設計的人,設計出來的頁面,還不如winform的界面來的簡介。而且就桌面簡單應用來說,不如winform來的快,不過其強大的特性和優勢,還是推薦WPF,WPF大大提高了用戶體驗,特別適合桌面應用。

WPF 天馬行空

WPF對界面樣式和控件樣式,可以說是天馬行空一樣,只要是你能想到的自定義方式,你都可以進行自定義控制,強大的動畫支持,讓我們能夠深愛這樣的技術,我們目前的項目中大量的使用WPF技術,剛開始學習WPF的時候,往往容易陷入winform的編程模式,就是拖拽控件,然後將控件命名,在後臺代碼中操作控件,這樣的模式,只適合簡單的應用,熟悉WPF的同仁都知道,采用MVVM才可以解決這樣的問題,一旦你掌握了MVVM,路由,命令,依賴屬性後,對於WPF中的控件,綁定,自定義動畫,自定義界面效果等你都可以隨意想象和發揮。也許真的天空才是你的極限,不過實際的企業級應用當中,更多的是更符合用戶使用習慣的方式,所以我們設計時更貼近用戶的使用習慣。

WPF HelloWord!

1、新建項目(以VS2010為準)

技術分享

2、新建一個WPF應用程序後,出現的界面如下:

技術分享

3、在界面上添加一些控件。

技術分享

4、編寫按鈕的事件處理代碼:

技術分享

5、F5運行查看效果,點擊按鈕後,是否會根據我們文本框輸入的內容,彈出具體的效果呢?

技術分享

6、效果是實現了,不過,窗體沒有居中,看起來不美觀。

技術分享

修改其中的如下幾個屬性。

技術分享

我們只需要修改 WindowStartupLocation 修改為:CenterScreen 修改完後,我們看看XAML代碼的變換

技術分享

再次運行、查看效果

技術分享

WPF-啟動運行控制

有的時候,我們希望我們的客戶端,同一臺機器只能運行一個應用程序,或者是程序啟動之前做一些操作,那麽我們如何做呢,我們就需要在WPF的運行機制上下功夫了,我們下面就來看看。

1、重寫App.xaml文件中的OnStartup方法。

首先、

技術分享

其次、

技術分享

base.OnStartup(e); 必須先於其他的代碼先執行。

可以再show之前做一些業務處理,或者初始化的處理。

2、program中通過main函數的方式來運行wpf中的mainwindow窗體。

技術分享

具體的代碼:

技術分享

運行程序後,與前面運行結果一樣,這裏就不貼出具體的代碼了。

WPF-UI線程

WPF中的UI控件,如果我們探究本質,他們都是從DispatcherObject繼承,所以都必須由UI線程進行調度和使用,如果我們在其他的後臺線程中操作界面相關的元素時,就會出現如下的異常信息:

技術分享

啟動運行後,果然出現異常。

技術分享

修改當前錯誤的方式,是調用UI線程的Dispatch對象來進行UI的調度和執行。

技術分享

修改完成後,運行即可看到正確的運行了。

技術分享

我們需要知道,最終還是由UI線程進行執行即可,當我們在WPF中進行多線程編程時需要特別的註意。在後面的MVVM編程的過程中,我們隊ViewModel中的綁定源對象進行修改時,也需要註意這個問題。

總結

WPF總體來說還是比較容易入門,熟悉winform的朋友,對於學習WPF來說,很容易上手,但是會在WPF新增的特性和特點上還需要下功夫,不斷的學習和應用,才可以完美的掌握WPF。未完待續

http://www.cnblogs.com/hegezhou_hot/archive/2012/10/19/2730448.html

WPF Step By Step 系列 - 開篇