WPF Step By Step 系列 - 開篇

  公司最近要去我去整理出一個完整的WPF培訓的教程,我恰好將本身學習WPF的過程和經驗總結整理成筆記的方式來說述,這裏就不按照書上面的東西來講了,書本上通常都是循序漸進,深刻淺出。我這裏主要是以實戰和具體的代碼爲準來說述。編程

        目前使用WPF的時間不算長,大概有2年多,比園子裏不少的大師,仍是會差不少。如今纔剛剛算是對WPF基本的應用時掌握了,可是距離UI設計方面,仍是有很大的欠缺。因爲本人不太擅長美感的東西。windows

 

 

WPF參考書推薦

         下面先整理下,本人主要學習的WPF參考書:瀏覽器

         一、WPF編程寶典(C#2010)多線程

         image

         該書:(必讀架構

         心得體會:讀完該書後,你對WPF的基礎和基本控件的使用,包括WPF的編程模型,相比Winform的特性和如何開始在實際的項目中下手,都有了基本的認知。裏面還介紹了控件模板的使用,WPF必須掌握模板。裏面包含了WPF的方方面面,不過,深度還有待繼續挖掘。框架

        二、深刻淺出WPF函數

        image

        該書 (入門必讀)佈局

        心得體會:該書寫的淺顯易懂,特別適合對WPF不瞭解,又渴望快速對WPF上手的書,符合中國人的閱讀習慣,很容易就看完該書,不過,該書中沒有包含太多的結合項目實例的內容。是本好書。學習

        三、WPF Programmer's Reference: Windows Presentation Foundation with C# 2010 and .NET 4測試

         image

         該書:(建議閱讀)

         心得體會:該書是英文版的,剛開始讀起來會比較的吃力,不過,一旦你看完前二本的WPF的書以後,再度,就不會那麼吃力了。該書將WPF的特性和用法都介紹的很是的詳細,對實際開發WPF項目過程當中的人有很大的幫助,可以解決不少的基本問題。

         四、WPF 4 Unleashed

         image

         該書 (建議閱讀)

         心得體會:該書的內容基本上和上述幾本書上大致的內容是相近的,可是在一些具體的WPF特性方面,會有更深刻的講解,比較適合深刻研究WPF的人士閱讀。

          五、Sams Teach Yourself WPF in 24 Hours

 

 

          image

         該書 (建議閱讀)

        心得體會:該書的內容上採用教學時的方式,分了二十四個學時,剛開始的時候會比較容易,後面的內容,相對就會比較深刻,適合從頭開始學習WPF的人,學習完後,會對WPF基本使用掌握。

         以上的介紹,僅表明我的意見,請你們不要拍磚。

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的優點

       一、WPF全部的操做都不依賴於GDI和GDI+,而是間接依賴於強大的Direct3D,這就意味着經過WPF能夠作出之前WinFrom沒法想象的視覺效果,包括3D效果的應用程序。目前最新的顯卡GPU已經支持DirectX 11,絢麗的逼真3D效果經過WPF實現也是很是簡單的事情。

       二、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以後,上面的二種狀況,則不會那麼複雜了,一、當業務邏輯變化時,只須要修改ViewModel中的相關代碼便可。二、當業務邏輯不發生變化時,任何對界面的修改,均可以讓界面設計人員去完成,這樣才能作到各司其職和協做。

將來發展

            微軟將來的發展方向上來講,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!

               一、新建項目(以VS2010爲準)

                image

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

                image   

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

                image       

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

                image

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

               image

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

               image

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

               image

              咱們只須要修改 WindowStartupLocation 修改成:CenterScreen 修改完後,咱們看看XAML代碼的變換

               image

               再次運行、查看效果

               image

WPF-啓動運行控制

                有的時候,咱們但願咱們的客戶端,同一臺機器只能運行一個應用程序,或者是程序啓動以前作一些操做,那麼咱們如何作呢,咱們就須要在WPF的運行機制上下功夫了,咱們下面就來看看。

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

                 首先、

                 image

                 其次、

                 image

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

                 能夠再show以前作一些業務處理,或者初始化的處理。

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

                image

                 具體的代碼:

                image

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

WPF-UI線程

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

               image

               啓動運行後,果真出現異常。

               image

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

               image

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

              image

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

  總結

               WPF整體來講仍是比較容易入門,熟悉winform的朋友,對於學習WPF來講,很容易上手,可是會在WPF新增的特性和特色上還須要下功夫,不斷的學習和應用,才能夠完美的掌握WPF。未完待續

出處:http://www.cnblogs.com/hegezhou_hot/

相關文章
相關標籤/搜索