|
1.開篇前言
關(guān)于本人——圣殿騎士剛?cè)胱?a target="_blank">博客園和51CTO寫技術(shù)博客,目前主要在一家外資企業(yè)從事項(xiàng)目管理、技術(shù)架構(gòu)及企業(yè)技術(shù)培訓(xùn)工作。由于工作和項(xiàng)目需要,所以對(duì)一些技術(shù)進(jìn)行了較為深入的研究,之前在整個(gè)公司做過一些技術(shù)專場(chǎng)的培訓(xùn),由于每次時(shí)間較短且人員較多的關(guān)系,沒能講得很透徹,所以挺對(duì)不住那些同事的。現(xiàn)在在園子里開一個(gè)博客,希望能把所學(xué)的微薄知識(shí)書寫出來,以供大家參考。近期將針對(duì)這些培訓(xùn)專場(chǎng)推出“OO到設(shè)計(jì)模式”、“WCF基礎(chǔ)到企業(yè)應(yīng)用”、“WPF基礎(chǔ)到企業(yè)應(yīng)用及優(yōu)化”、“Silverlight基礎(chǔ)到企業(yè)應(yīng)用及優(yōu)化”、“Windows Azure基礎(chǔ)到企業(yè)應(yīng)用”等系列博文,由于是自己對(duì)這些技術(shù)的使用總結(jié)和心得體會(huì),錯(cuò)誤之處在所難免,懷著技術(shù)交流的心態(tài),在博客園發(fā)表出來,所以希望大家能夠多多指點(diǎn),這樣能使一部分人受益同時(shí)也能糾正我的錯(cuò)誤觀點(diǎn),以便和各位共同提高!
關(guān)于WPF基礎(chǔ)到企業(yè)應(yīng)用系列——這幾年給自己的感覺就是一直很忙,也不知道在忙些什么,反正生活和工作都不消停,一直說寫書,但是寫了兩章就一直擺在那里,在寫這個(gè)專題前花了點(diǎn)時(shí)間寫了一個(gè)31 天重構(gòu)學(xué)習(xí)筆記索引,感覺重新找回了那份心靜的感覺,所以打算繼續(xù)寫一個(gè)系列文章,全當(dāng)總結(jié)和技術(shù)交流。開篇之前猶豫了很久:1,面對(duì)自己喜歡的這么多技術(shù),不知道先寫哪一個(gè)系列為好(OO與設(shè)計(jì)模式、WCF、WPF、Silverlight、.NET多線程編程、LinQ、AOP和IOC在.NET項(xiàng)目中綜合應(yīng)用、ASP.NET MVC、Windows Azure等),最后打算先寫WPF,然后再Silverlight,進(jìn)而寫其他的系列。畢竟WPF照現(xiàn)在的這種趨勢(shì)發(fā)展,遲早會(huì)在C/S應(yīng)用程序中獨(dú)占鰲頭。Silverlight也必將在企業(yè)級(jí)開發(fā)當(dāng)中逐漸應(yīng)用起來。2,WPF從2007開始接觸以來,使用比較多,也相對(duì)比較熟悉,況且作為WPF子集的Silverlight,講了WPF,Silverlight就相對(duì)簡(jiǎn)單了。3,主要是考慮怕自己書寫的文章不能教導(dǎo)于人,反而誤導(dǎo)他人。所以懷著對(duì)這些問題的考慮,我一定會(huì)盡心盡力的寫好每一篇文章,不負(fù)大家所望!
2.內(nèi)容提綱
· 1.開篇前言
· 2.內(nèi)容提綱
· 3.系列安排
· 4.開發(fā)工具
· 5.參考資料
· 6.面試問題
· 7.關(guān)于前景
· 8.效果展示
· 9.本文總結(jié)
3.系列安排
· 1. 開篇有益
· 2. WPF基礎(chǔ)(歷史、版本、結(jié)構(gòu)、框架)
· 3. WPF介紹 、用WinForm和WPF實(shí)現(xiàn)同一個(gè)例子的案例。
· 4. Application、window、多線程、XAML、邏輯樹與可視樹及內(nèi)容模型
· 5. 使用面板做布局(幾種布局控件的XAML及CS代碼,綜合布局等)
· 6. 依賴屬性、附加屬性(基本、繼承、元數(shù)據(jù))
· 7. 路由事件、附加事件
· 8. 命令
· 9. WPF控件分類介紹與使用技巧(ContentControl、HeaderedContentControl…… Decorator)
· 10. 尺寸縮放、定位與變換元素
· 11. 資源
· 12. 數(shù)據(jù)綁定(基本、值轉(zhuǎn)換、驗(yàn)證、集合的篩選、排序、分組、主從、數(shù)據(jù)提供者)
· 13. 樣式
· 14. 模板
· 15. 多語言、皮膚和主題
· 16. 2D圖形
· 17. 3D圖形
· 18. 動(dòng)畫(幾種動(dòng)畫的應(yīng)用)
· 19. 音頻、視頻、語音
· 20. 文檔、打印、報(bào)表
· 21. 用戶控件和自定義控件
· 22. Win32、Windows Form以及ActiveX之間的互用性
· 23. 構(gòu)建并部署應(yīng)用程序(ClickOnce部署、微軟setup /InstallShield+自動(dòng)更新組件)
· 24. WPF的模式講解及實(shí)例(MVC Demo)
· 25. WPF的模式講解及實(shí)例(MVP Demo)
· 26. WPF的模式講解及實(shí)例(MVVM Demo)
· 27. 性能優(yōu)化(WPF項(xiàng)目的瓶頸)
· 28.一個(gè)完整WPF項(xiàng)目(普通架構(gòu)版)
· 39. 一個(gè)完整WPF項(xiàng)目(MVVM架構(gòu)版)
· 30. WPF 4.0新功能
4.參考資料
提到參考資料,大家第一感覺就是MSDN,當(dāng)然我也不例外,這個(gè)網(wǎng)站基本上是學(xué)習(xí)微軟技術(shù)的首選站點(diǎn),除了這個(gè)網(wǎng)站以外,我還參考了很多其他的社區(qū)和網(wǎng)站,基本上都在.NET 技術(shù)社區(qū)之我見(英文篇)做了介紹,比如CodeProject、CodePlex 、windowsclient、C# Corner等,除了這些網(wǎng)站還有一些國(guó)外技術(shù)專家blog。
1. Programming Windows Presentation Foundation
這本書出得很早,在學(xué)WPF之初就是這本書和MSDN作為教材,優(yōu)點(diǎn):書中講解的語言淺顯易懂并且講解的順序和思路也很清晰,內(nèi)容也是面面俱到,例子也舉得很恰當(dāng)。缺點(diǎn)是講得很簡(jiǎn)單,稍偏向于入門書籍;書中的理論和例子都是針對(duì)于WPF的測(cè)試版,所以和正式的版本有一些出入,你會(huì)發(fā)現(xiàn)從書中拷貝下來的例子在程序中不能運(yùn)行,這個(gè)你也不要見怪,只要能明白原理就行。
2. Windows Presentation Foundation Unleashed (WPF) (Unleashed)
這本書是WPF正式版出來以后出版的,所以和上一本比起來就有很大的優(yōu)勢(shì),并且講的內(nèi)容也比上一本詳細(xì),所以在很長(zhǎng)一段時(shí)間,除了MSDN,它就成了很權(quán)威的教材。在閱讀的時(shí)候雖然沒有Programming Windows Presentation Foundation那么輕松,但同時(shí)這里面的例子會(huì)給你帶來很強(qiáng)的成就感。
這本書是Adam Nathan寫的,Adam是WPF Team的核心成員,也是WPF的專家。
3. Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation
WPF官方網(wǎng)站(http://wpf.NETfx3.com)上推薦的書。
這本書是Charles Petzold寫的,也是WPF的專家。所以里面有很多的技術(shù)內(nèi)幕和使用技巧都值得我們學(xué)習(xí)和操練,但我一直沒有堅(jiān)持看完,原因很簡(jiǎn)單,這本書不太適合入門,所以當(dāng)時(shí)就沒有選擇這一本書,到學(xué)會(huì)了WPF以后,又經(jīng)常關(guān)顧于國(guó)外的各大社區(qū)和論壇,上面很多內(nèi)容可以解除你對(duì)WPF學(xué)習(xí)和使用中的疑問,所以它就一直擱置到了一邊,直到寫這個(gè)系列之前才翻完大半。
4,WPF4是大家都期待的,因?yàn)榍懊鎺讉€(gè)版本存在著一些問題,如性能優(yōu)化不上去、某些特性不支持等原因。那么WPF4的公布,讓很多人都比較欣喜,如下第一排3本就是針對(duì)WPF4(VS2010)的,所以有興趣的同仁也可以去找相關(guān)的資源。
當(dāng)然國(guó)內(nèi)也有一些書籍可以參考,如微軟經(jīng)典紅皮書對(duì)WPF的講解可以作為入門學(xué)習(xí),還有WPF揭秘,雖說有一些翻譯上的小錯(cuò)誤,但是整體還是可以的。
5.開發(fā)工具
大部分的應(yīng)用程序都會(huì)使用如下配置和工具開發(fā):
CPU:2.40GHz 內(nèi)存2G
操作系統(tǒng):Windows XP+SP3英文版
開發(fā)工具:Visual Studio 2008+SP1英文版
Expression Design 3
Expression Blend 3
Expression Encoder 3
由于最近用上了一臺(tái)新機(jī)器,也可能會(huì)使用它做某些開發(fā):
CPU:i7四核 2.8GHz 內(nèi)存:4G 硬盤:1T 顯卡:GTX260 高清2G 顯示器:24高清
操作系統(tǒng):Windows 7 Professional
開發(fā)工具:Visual Studio 2010
Expression Design 4
Expression Blend 4
Expression Encoder 4
6.面試問題
關(guān)于面試這個(gè)問題,每個(gè)公司都會(huì)有自己的面試要求,尤其是美國(guó)和印度對(duì)WPF的重視程度,讓W(xué)PF的應(yīng)用逐漸變得廣泛。面試題目也變得多了起來,之前承擔(dān)了一些WPF的面試工作,所以收集、整理和寫了一些面試題目,以供大家參考,由于是自己對(duì)這方面的一些看法,所以有錯(cuò)誤的地方也請(qǐng)大家見諒,對(duì)每個(gè)面試者,我覺得都要以尊敬的態(tài)度,不管技術(shù)如何,不管學(xué)歷如何,人都有他擅長(zhǎng)的一方面。同時(shí)你的理解和他的理解可能各有千秋,也不要把某些觀點(diǎn)強(qiáng)加于人而傲視別人。所以我覺不管是面試者或者是被面試者,都要懷著謙虛和尊敬別人的態(tài)度。
初級(jí)工程師
- 較強(qiáng).NET 2.0 基礎(chǔ)知識(shí)& 愿意學(xué)習(xí)新技術(shù)
- 解釋什么是依賴屬性,它和以前的屬性有什么不同?為什么在WPF會(huì)使用它?
- 什么是樣式(Style)?
- 什么是模板(template)?
- 綁定(Binding )的基礎(chǔ)用法
- 解釋這幾個(gè)類的作用及關(guān)系: Visual, UIElement, FrameworkElement, Control
- 視覺樹vs 邏輯樹?
- 屬性變更通知(INotifyPropertyChange 和ObservableCollection)
- ResourceDictionary
- UserControls
- 事件的三種方式(冒泡、直接、隧道)
中級(jí)工程師
- Routed Events(路由事件) & Commands (命令)
- 綁定詳解(包括綁定到單一屬性、實(shí)體、集合、值轉(zhuǎn)換、觸發(fā)機(jī)制、驗(yàn)證等)
- 怎樣布局一個(gè)漂亮的UI(你們以前的項(xiàng)目是怎么做的?)
- WPF和之前的技術(shù)交互(WPF/WinForms)
- animations 、storyboarding
- ClickOnce 部署(優(yōu)點(diǎn)和缺點(diǎn))或者是自己通過微軟setup/InstallShield+自己的自動(dòng)更新組件。
- 樣式、主題和觸發(fā)器
- 自定義控件
- 怎樣才能工作線程更新UI?
高級(jí)工程師
- 什么是attached behavior(附加行為或者附加事件)?
- PRISM,CAL & CAG等等框架,是否使用過?你們是怎么用的?沒有使用的話,解釋一下自己的開發(fā)模式和框架。
- 怎樣才能工作線程更新UI?
- WPF 3D和動(dòng)畫的應(yīng)用(是否使用過?用過哪些?)。
- Silverlight和WPF的異同。
- 怎么開發(fā)自定義控件?可以簡(jiǎn)單介紹一下自己開發(fā)的控件。
- 你之前的WPF項(xiàng)目開發(fā)流程是怎樣的?
- 三種開發(fā)模式(MVVM/MVP/MVC)的理解。
- WPF的性能調(diào)整(你是怎么優(yōu)化WPF性能的?)
- 聊聊你做WPF的一些經(jīng)驗(yàn)和體會(huì)。
7.關(guān)于前景
關(guān)于WPF的前景,我不想做過多的介紹,有很多人已經(jīng)對(duì)這方面做了很深入的研究,那么我們就可以做一下簡(jiǎn)單的總結(jié):
由于WPF帶來了很多優(yōu)秀的功能和特性:
1.超強(qiáng)的用戶體驗(yàn);
2.簡(jiǎn)單便捷的部署方式(易于更新升級(jí));
3.更簡(jiǎn)便的編程方式。
4,實(shí)現(xiàn)絢麗效果比較簡(jiǎn)單。所以在以下幾個(gè)方面得到了很廣泛的應(yīng)用:
1.企業(yè)應(yīng)用系統(tǒng)(主要做一些管理系統(tǒng),國(guó)內(nèi)已經(jīng)很多公司在使用了);
2.一些Silverlight目前很難達(dá)到的效果同時(shí)又要求能從網(wǎng)絡(luò)瀏覽到(如Asahiyama Zoo (日本北海道旭山動(dòng)物園))
3.桌面應(yīng)用程序(如雅虎推出即時(shí)通訊軟件和QQ等)。
4,一些對(duì)效果要強(qiáng)較高應(yīng)用的產(chǎn)品WPF正因?yàn)橛心敲炊鄡?yōu)秀的特性和功能并且微軟一直在這方面努力,我們相信它一定會(huì)帶來一場(chǎng)C/S用戶程序的革命。對(duì)這個(gè)應(yīng)用,我也曾專門了解過,在國(guó)內(nèi)現(xiàn)在很多公司都在對(duì)WinForm進(jìn)行升級(jí)到WPF,在國(guó)外如美國(guó)和印度等國(guó)家,對(duì)WPF的使用也逐漸普遍起來。上周公司首席科學(xué)家請(qǐng)客到新加坡一家六星級(jí)酒店吃飯,我以項(xiàng)目組附帶的形式很榮幸也被邀請(qǐng),旁邊剛好是一個(gè)印度的Architect,我也順便問了他們國(guó)家對(duì)Windows azure、WPF和Silverlight等技術(shù)的應(yīng)用,發(fā)現(xiàn)他們國(guó)家對(duì)這些技術(shù)應(yīng)用得很早并且也形成了自己的一些成熟體系。最近公司做的項(xiàng)目有很多以色列人來演示他們做的智能系統(tǒng)(UI用WPF實(shí)現(xiàn),智能撲捉用攝像頭,這樣人站在電視機(jī)前面就可以用自己的身體玩很多體驗(yàn),比如你可以真實(shí)體驗(yàn)三維游戲、你可以用你的身體直接做很多網(wǎng)絡(luò)里的事情),他們比我們現(xiàn)在做的系統(tǒng)(我們的系統(tǒng)是用WPF做UI,然后在電視上通過藍(lán)牙和遙控器實(shí)現(xiàn)點(diǎn)播網(wǎng)絡(luò)視頻、游戲和新聞等)高級(jí)很多,同時(shí)也讓我們看到他們對(duì)這方面的研發(fā)能力。所以相信WPF一定可以逐漸流行起來,就讓我們拭目以待。
8.效果展示
上面談了這么多WPF的東西,有些沒有接觸過WPF的同仁也許會(huì)問:WPF到底能實(shí)現(xiàn)什么樣的效果?WPF在哪些公司用到過?WPF究竟能不能應(yīng)用于企業(yè)開發(fā),那么我這里就簡(jiǎn)單收集了一些WPF的一些效果圖和一些商業(yè)運(yùn)用產(chǎn)品截圖,希望大家看到以后,能對(duì)WPF有一個(gè)全面的了解。
WPF部分例子的效果圖:
WPF企業(yè)使用案例(部分案例介紹來自網(wǎng)絡(luò)):
AMD Live : AMD為提升PC用戶數(shù)字娛樂體驗(yàn)的新平臺(tái),一個(gè)結(jié)構(gòu)化、可視化的在線照片、音樂、視頻的播放軟件
從這個(gè)界面來看真的是非常強(qiáng)大,娛樂性已經(jīng)與蘋果系統(tǒng)幾乎無異。下載地址:http://experience.amdlive.com/us-en/Home-Page/AMD-LIVE-Explorer.ASPx
這位仁兄(http://www.cnblogs.com/lovebread/archive/2010/05/06/1728492.html)也用Blend模擬了一個(gè)比較相似的界面:
Chosun Daily iReader :基于WPF技術(shù)做的朝鮮日?qǐng)?bào)閱讀器,可以看到高保真影像。
Entellium Rave:中小企業(yè)CRM提供商 Entellium![]()
專供中小企業(yè)使用的 CRM系統(tǒng),漂亮的界面與復(fù)雜內(nèi)容的結(jié)合,邏輯層與表現(xiàn)層的分離使得這種平衡得以實(shí)現(xiàn)。
![]()
WPF概念版QQ
圖片來自于:http://www.cnblogs.com/technology/,這位仁兄詳細(xì)體驗(yàn)了WPF帶來的快感,更多圖片也可以訪問他的博客。
![]()
NET技術(shù):WPF 基礎(chǔ)到企業(yè)應(yīng)用系列1——開篇有益,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。