這倆年多來筆者一直在從事關于WPF的開發(fā)。雖然不能說是專家級別的。但是對于WPF的應用還是有一定的了解。論他的靈活性決對不在WinForm之下。WPF的出現更是引發(fā)一段熱議。他的何去何從更是讓很多人感到迷茫。因為那個時候可以說只有Winow 7才能跟WPF完美的接合??上霾环陼r,XP占了大部分的市場。所以WPF的出生動靜很大,可惜后力不足,漸漸的淡淡化他的光芒。于至于網絡上更是有對WPF的死亡產生了很大的爭議。但是這并沒有讓他沉默下去,這幾年來window 8和window 10的推廣更是讓他起來的跡象。對于未來WPF會發(fā)展到如何的程度。筆者也不敢猜測。更多的只是希望他能走的更遠一點。

如果WPF沒有WinForm所具有的優(yōu)點,那么他也不可能活到現在,更不用說還有可能崛起了。所以筆者想開一個系列來談談這倆年的WPF之旅。希望能給那些正在學習WPF或是將要學習的同學們帶來一些幫助。出于筆者本身的學習方式有一點不正統(tǒng)的原因,所以這一系列的文章只能被定義為雜談。

曾經有一個剛剛從事WPF的同事問筆者靜態(tài)資源和動態(tài)資源有什么不同。筆者傻了幾秒反問到什么是靜態(tài)資源,什么是動態(tài)資源。這次談話的結果可想而知——很尷尬。為什么筆者會不知道靜態(tài)資源和動態(tài)資源呢?事實上筆者沒有看過相關的WPF書籍。那么筆者又是如何學習WPF呢?一句話——看開源項目的源碼進行學習。本來筆者想把這一系列命名為“WPF 開源項目”。后來想想有一點自大了,同時筆者也不知道這一系列要以什么樣子知識路線來講解。所以命名"WPF 雜談"顯示平淡一點,又可以讓筆者自由的吹牛。

以前用于開發(fā)商業(yè)軟件的技術有Winform(C#),MFC(C++), Swing(JAVA),Delphi。現在.NET又都出了一個WPF。即然有Winform了,為什么.NET又要在來一個WPF。筆者曾經有想過這樣子的問題??上ЧP者就一個懶人,后面也沒有細細的去查找原因。WPF的靈動是筆者深深喜歡的優(yōu)點之一。和WinForm比起來筆者只知道他們的圖形引擎不一樣子。這還是從一些書籍里面看到的。WinForm是基于User32/GDI/GDI+,而WPF是基于DirectX引擎的。不用筆者多說就明白了——DirectX常常會在開發(fā)游戲的時候聽到。所以WPF可以做到很多不錯的動畫效果。這也是Winform所不能做到。哦!不。應該說是很難做的。但是筆者到現在還是沒有多大的應用動畫效果。主要是筆者從事餐飲行業(yè)。餐廳里面的電腦配置不敢拘同。516內存的XP系統(tǒng)是一種常態(tài)。如果你用上動畫的話,你注定要為動畫的BUG和運行性能買單。這說明了一問題WPF需要有一定的配置環(huán)境。從.NET Framework來講,還是.NET 4.0來的開好一點。因為這樣子XP,Window 7,Window 8還是Window 10都可以做到共用。

筆者之所以可以很快的上手WPF。這里要深深的感謝那些把自己的項目開源出來的人。這一點國外的開發(fā)人員還有做的很不錯。WPF有很多知識點在國內是無法百度到的,所以想要學好WPF還是要去搞一個VPN或是自己想辦法跳墻過去。

SharpDevelop

SharpDevelop是一款用C#開發(fā)的開發(fā)工具。這是筆者第一個接觸的WPF項目。對于源碼筆者也只是看過部分。當年筆者是從事JAVA開發(fā)的。對于JAVA的OSGI思想很感興趣。也曾試著尋找有沒有.NET大神寫一些類似的框架。只是可惜太少了,有的也是半成品不是真正的OSGI。不過.NET有一個自己的想法——插件思想。這也是筆者查看他源碼的原因。他雖然沒有OSGI的思想,可是筆者對他的插件實現還是有一定的興趣的。所以有興趣的讀者們可以試著去看一下。好吧。有一點遠了。SharpDevelop他可以說是WPF和Winform的組合體。他有一部分是WPF實現。而有一些卻是用Winform。當然讀者們會想著這樣子也行。不怕出問題嗎?問題是不會太大。只是筆者還是建議不要這樣子用。鬼知道他們倆個將來會什么樣子。當然如果只是一次項目的話,為了方便到是可以這樣子做。反正項目做完就是拜拜了。不用維護。SharpDevelop有一點大,想要吃通他的話,需要一定的時間和精力。不過他真的是一款學習PC端開發(fā)的最佳開源項目之一。

SharpDevelop的下載地址:https://github.com/2594636985/SharpDevelop。

Xceed.Wpf.Toolkit

Xceed.Wpf.Toolkit是一個