WPF Step By Step 系列 - 開篇


        公司最近要去我去整理出一個完整的WPF培訓的教程,我剛好將自己學習WPF的過程和經驗總結整理成筆記的方式來講述,這里就不按照書上面的東西來說了,書本上一般都是按部就班,深入淺出。我這里主要是以實戰和具體的代碼為准來講述。

        目前使用WPF的時間不算長,大概有2年多,比園子里很多的大師,還是會差很多。現在才剛剛算是對WPF基本的應用時掌握了,但是距離UI設計方面,還是有很大的欠缺。由於本人不太擅長美感的東西。

 

 

WPF參考書推薦

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

         1、WPF編程寶典(C#2010)

         image

         該書:(必讀

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

        2、深入淺出WPF

        image

        該書 (入門必讀)

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

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

         image

         該書:(建議閱讀)

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

         4、WPF 4 Unleashed

         image

         該書 (建議閱讀)

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

          5、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的優勢

       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為准)

                image

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

                image   

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

                image       

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

                image

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

               image

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

               image

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

               image

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

               image

               再次運行、查看效果

               image

WPF-啟動運行控制

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

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

                 首先、

                 image

                 其次、

                 image

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

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

                2、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。未完待續


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM