|
一. 摘要
圣殿騎士由于工作和項(xiàng)目需要,所以對(duì)一些技術(shù)進(jìn)行了較為深入的研究,之前在整個(gè)公司做過(guò)一些技術(shù)專場(chǎng)的培訓(xùn),由于每次時(shí)間較短且人員較多的關(guān)系,沒(méi)能講得很透徹。一直都想以文字的形式把這些培訓(xùn)細(xì)節(jié)寫出來(lái),但是發(fā)現(xiàn)進(jìn)度確實(shí)很慢,所以先來(lái)幾篇宏觀的講解,希望能起到“授人與魚也授人以漁”的效果。今天我們就來(lái)分享一下WPF內(nèi)訓(xùn)之旅,這篇文章以WPF培訓(xùn)為主線,中間貫穿了一些其他技術(shù)和使用心得。其他培訓(xùn)專題諸如“OO到設(shè)計(jì)模式”、“WCF基礎(chǔ)到企業(yè)應(yīng)用“Silverlight基礎(chǔ)到企業(yè)應(yīng)用及優(yōu)化”隨后也會(huì)奉上,熱誠(chéng)和大家互相學(xué)習(xí),如果有講得不妥之處,也希望大家能夠多多指點(diǎn)!
二. 本文提綱
· 1.摘要
· 2.本文提綱
· 3.簡(jiǎn)要介紹
· 4.WPF介紹
· 5.WPF基礎(chǔ)
· 6.WPF工具
· 7.WPF開發(fā)模式
· 8.WPF團(tuán)隊(duì)協(xié)作
· 9.了解并使用MVVM框架
· 10.自己開發(fā)MVVM框架
· 11.其他技術(shù)引入
· 12.WPF項(xiàng)目及性能優(yōu)化
· 13.部署與更新
· 14.總結(jié)
· 15.詳細(xì)技術(shù)索引
三. 簡(jiǎn)要介紹
關(guān)于如何做好一個(gè)專題的培訓(xùn),圣殿騎士也有一些自己的看法,我覺(jué)得如果想要一個(gè)培訓(xùn)起到良好的效果,得注意以下幾個(gè)方面:
1,了解受眾:首先要確定培訓(xùn)的受眾,他們是直接的受益者,所以你必須得了解他們的知識(shí)背景,這樣才能合理把要講的知識(shí)插入到他們各自的知識(shí)樹上去,否則效果就會(huì)大打折扣。
2,來(lái)龍去脈:不管講什么技術(shù),首先得介紹這門技術(shù)的歷史淵源、來(lái)龍去脈、市場(chǎng)前景,因?yàn)橹挥薪榻B了這些,才會(huì)使受眾仔細(xì)聆聽且能夠跟隨你的思路往下走,這也是比較關(guān)鍵的一環(huán)。
3,把握聯(lián)系:我們要講的這門技術(shù)往往不可能單獨(dú)存在,它或多或少和之前使用的技術(shù)有一些聯(lián)系,所以在講解過(guò)程中適當(dāng)引入之前的技術(shù)會(huì)起到很好的效果,并且在項(xiàng)目中,它也不可能單獨(dú)存在。
4,大道至簡(jiǎn):必須從基礎(chǔ)講起,從一個(gè)”Hello World“講起,因?yàn)橹挥杏么蟊娀乃季S來(lái)闡述問(wèn)題,才會(huì)引起大眾的共鳴,這同時(shí)也體現(xiàn)了一些原則,比如大道至簡(jiǎn)、深入淺出、先易后難。之后就開始不斷深入淺出的講解各知識(shí)點(diǎn)細(xì)節(jié),最好以理論+Demo的形式,這樣收到的效果才會(huì)達(dá)到或超過(guò)預(yù)期。
5,工具使用:對(duì)于一門技術(shù),或多或少都有適合它的工具,這些工具不僅能提高開發(fā)效率,同時(shí)也是更好深入學(xué)習(xí)該技術(shù)的一個(gè)前提,所以合理使用工具也是一個(gè)比較重要的方面。
6,真實(shí)項(xiàng)目:前面講了來(lái)龍去脈,講了基礎(chǔ)知識(shí)以及與其他技術(shù)的區(qū)別和聯(lián)系,同時(shí)也講了開發(fā)工具,那么這個(gè)時(shí)候就需要引入最重要的關(guān)注點(diǎn)——如何把之前講過(guò)的各個(gè)方面關(guān)聯(lián)起來(lái),讓它們作用在真實(shí)項(xiàng)目當(dāng)中,一般最容易接受的當(dāng)屬簡(jiǎn)單頁(yè)面+CRUD操作。
下面這幅圖是我在半年前寫的一份PPT,因?yàn)楣疽笥糜⑽谋硎觯詫懙暮芎?jiǎn)約,這也怪圣殿騎士英文不好:-D,表達(dá)不像中文那樣靈活自如,不過(guò)大家可以將就看一下大綱(PPT和代碼在后面的文章中提供下載,暫時(shí)還沒(méi)找到提供下載的地方):
因?yàn)樯厦娴腜PT基本涵蓋了WPF的所有重要知識(shí)點(diǎn),所以得為每一個(gè)知識(shí)點(diǎn)準(zhǔn)備相關(guān)的Demo,只有這樣才能把每個(gè)知識(shí)點(diǎn)完全講透,否則只能起到云里霧里、不知所云的效果。如下便是與之配套的Demo截圖:
上面的代碼包中主要包括:
WPFBasic:主要講解WPF的基礎(chǔ)概念,涵蓋了WPF的方方面面。
WPFPatterns:強(qiáng)調(diào)Presentation模式的重要性,主要包括MVC/MVP/MVV以及一些MVVM的框架。
WPFProject:具體項(xiàng)目中如何把握,如何引用之前的技術(shù)和經(jīng)驗(yàn)。
WPFTools:一門技術(shù)都有與之相應(yīng)的開發(fā)、管理、協(xié)助工具,WPF也不例外。
WPF.PPT:這里是一些簡(jiǎn)單的介紹,熟悉的可以略過(guò)。
這些Demo主要來(lái)源于兩個(gè)方面,一是自己寫了一些;二是改編了網(wǎng)絡(luò)上的一些素材;如果大家仔細(xì)看,可以發(fā)現(xiàn)它涵蓋了WPF的方方面面,并且對(duì)重點(diǎn)和難點(diǎn)也做了區(qū)別對(duì)待。
四. WPF介紹
1,概念引入
Windows APIWindows Presentation Foundation (WPF) 是新一代顯示系統(tǒng),用于生成能帶給用戶震撼視覺(jué)體驗(yàn)的 Windows 客戶端應(yīng)用程序。使用 WPF,您可以創(chuàng)建廣泛的獨(dú)立應(yīng)用程序以及瀏覽器承載的應(yīng)用程序。 WPF 的核心是一個(gè)與分辨率無(wú)關(guān)并且基于向量的呈現(xiàn)引擎(這樣就可以保證圖像和影像具有高清晰度),旨在利用現(xiàn)代圖形硬件的優(yōu)勢(shì)。WPF 通過(guò)一整套應(yīng)用程序開發(fā)功能擴(kuò)展了這個(gè)核心,這些功能包括可擴(kuò)展應(yīng)用程序標(biāo)記語(yǔ)言 (XAML)、控件、數(shù)據(jù)綁定、布局、二維和三維圖形、動(dòng)畫、樣式、模板、文檔、媒體、文本和版式。WPF 最先包含在如下圖的 Microsoft .NET Framework 3.0中,它使您能夠生成融入了 .NET Framework 類庫(kù)的其他元素的應(yīng)用程序(因?yàn)閃PF包含在.NET Framework 3.0 里面,所以我們這里不列出3.5和4.0的框架圖)。
2,歷史淵源
微軟在1983年春季就宣布開始研究開發(fā)Windows,到現(xiàn)在已經(jīng)有27年的歷史,這27年來(lái),微軟官方主力推行的編程語(yǔ)言與API有四個(gè)主要階段:
1983~1991年:C搭配Windows API。當(dāng)時(shí)的程序員是很少的,并且開發(fā)一個(gè)項(xiàng)目也比較的不容易。
1992~2001年:這段時(shí)期C++搭配MFC庫(kù)。在歷史上MFC是最多人用的Windows編程方法。但此后MFC技術(shù)也逐漸退出了歷史的舞臺(tái)。
2002~2006年:(C#、VB以及其他語(yǔ)言)+Windows Form框架。這段期間IT技術(shù)的焦點(diǎn)是在Web上,所以雖然大家都在用.NET,但真正的主角是ASP.NET,而不是Windows Forms。Windows Forms還沒(méi)等熬出頭,WPF就出現(xiàn)了。Windows Forms注定會(huì)是歷史中“最少人使用的微軟開發(fā)技術(shù)”。Windows Forms其實(shí)是不錯(cuò)的技術(shù),在很多方面都做得挺不錯(cuò),比如在UI上、圖形編程上、開發(fā)效率上、穩(wěn)定性上都做得很讓人敬佩,但是我們最后看到的結(jié)果卻是大家沒(méi)有引起足夠的重視,很多人更偏向于用Delphi和MFC,對(duì)Windows Forms卻視而不見,所以造成的最后結(jié)果就是Windows Forms生不逢時(shí)。
2007~現(xiàn)在 :2007年1月30日,Windows Vista正式全球同步發(fā)布。它之所以能實(shí)現(xiàn)那么絢麗的效果,最關(guān)鍵的一點(diǎn)就是其內(nèi)在也使用了Windows Presentation Foundation(WPF)類似的技術(shù),所以帶來(lái)的震撼視覺(jué)效果和用戶體驗(yàn)使Vista的效果如此絢麗,雖然Vista在后來(lái)最終成為了一個(gè)敗筆,但它為 Windows 7打下了堅(jiān)實(shí)的繼承。后臺(tái)語(yǔ)言(C#、VB以及其他語(yǔ)言)+XAML構(gòu)成的WPF。你可能覺(jué)得很奇怪,微軟為何釋出兩個(gè)作用相似,卻不同且不相容的.NET API。因?yàn)闀r(shí)代的改進(jìn),用戶對(duì)視覺(jué)感受需求不斷提高。因?yàn)閃PF支持硬件加速、精確顏色、浮點(diǎn)坐標(biāo)、動(dòng)畫實(shí)現(xiàn)、三維、視頻感受等要求提高。而傳統(tǒng)的 Winform 是到不到這些效果的。
3,技術(shù)更替
舊的事物遲早會(huì)退出歷史舞臺(tái),新的生命會(huì)經(jīng)過(guò)曲折的里程登上王座。從圖像界面的出現(xiàn)那一刻起,用戶界面(UI)就進(jìn)入了一個(gè)特殊的歷史時(shí)期。在隨后幾年里,出現(xiàn)了很多具有歷史意義的界面風(fēng)格。現(xiàn)在,經(jīng)典的Windows窗口風(fēng)格已經(jīng)存在了10多年,即使是深受用戶喜愛的Windows XP風(fēng)格也已出現(xiàn)五年有余。無(wú)疑大家與我一樣,期待著全新視覺(jué)界面的出現(xiàn)。另一方面,當(dāng)今計(jì)算機(jī)處理芯片飛速發(fā)展,特別是顯示芯片,顯示卡幾乎成為了一臺(tái)微型的計(jì)算機(jī)。但是,其強(qiáng)大的處理能力卻沒(méi)有得到充分的應(yīng)用。目前,顯示卡GPU(Graphics Processing Unit)的處理能力大多只應(yīng)用在游戲和多媒體領(lǐng)域。為了給用戶提供最強(qiáng)的體驗(yàn),滿足不斷提高的用戶視覺(jué)需求,Windows Vista引入了全新的圖形子系統(tǒng)——WPF。她能充分利用顯示卡的處理能力提供給用戶最絢的視覺(jué)效果。
在Windows Vista出現(xiàn)之前,Windows平臺(tái)的圖形系統(tǒng)主要有:GDI、GDI+、Direct3D。其中,GDI的應(yīng)用領(lǐng)域最為廣泛。GDI圖形系統(tǒng)已經(jīng)形成了很多年并且已經(jīng)逐漸形成了自己的一套開發(fā)體系。它提供2D圖形處理、文本處理,以及有限的圖像處理功能。雖然在一些顯示卡上支持部分的GDI加速,但是其效果與現(xiàn)在的Direct3D相比還是很弱小。GDI+開始出現(xiàn)是在2001年,它引入了2D圖形的反走樣、浮點(diǎn)數(shù)坐標(biāo)、漸變以及單個(gè)象素的 Alpha支持。它幾乎支持所有的常用圖像格式。但是,GDI+沒(méi)有任何加速功能(全部是用軟件實(shí)現(xiàn))。
4,核心框架
如圖,在Windows Vista和Windows 7中,GDI、GDI+和WPF并行存在。但是,WPF所有的操作都不依賴于GDI和GDI+,而是間接依賴于強(qiáng)大的Direct3D。右圖中的標(biāo)示為暗紅色的是WPF的三大核心組件,其中milcore組件,它的職責(zé)是完成與Direct3D的交互。并且出于效率和安全考慮,milcore由非托管代碼實(shí)現(xiàn)。WPF 中的所有顯示是通過(guò) DirectX 引擎完成的,可實(shí)現(xiàn)高效的硬件和軟件呈現(xiàn)。WPF 還要求對(duì)內(nèi)存和執(zhí)行進(jìn)行精確控制。milcore 中的組合引擎受性能影響關(guān)系大,需要放棄 CLR 的許多優(yōu)點(diǎn)來(lái)提高性能。
WPF的兩大核心組件PresentationFramework和PresentationCore都位于通用語(yǔ)言運(yùn)行庫(kù)(CLR)之上。那么就可以看出,WPF的大部分代碼都是以托管形式存在的。這兩大組件提供了WPF項(xiàng)目需要的函數(shù)庫(kù)和功能庫(kù),由于是以托管的形式存在,所以也避免了我們直接操作底層和出現(xiàn)諸如內(nèi)存泄露的可能性。
5,功能介紹
正如上面的這幅圖,可以看出一共分成了五大塊(Core Presentation、User Interface Services、Base Services、Document Servies和XPS Viewer):
- Core Presentation:包含了所有的圖形效果,如圖形、2D圖形、3D圖形、文本、音頻、視頻和顯示效果。同時(shí)還包括強(qiáng)大的動(dòng)畫效果,動(dòng)畫可以應(yīng)用前面的所有元素。最下面的那個(gè)就是視覺(jué)基本元素。
- User Interface Services:包含了Application Services(應(yīng)用程序服務(wù))、Deployment Services(部署服務(wù))、Controls(控件庫(kù))、Layout(布局)和Data Binding(數(shù)據(jù)綁定).
- Base Services:提供了XAML支持、Accessibility(提高開發(fā)效率)、Input&Events(輸入和事件的支持)、Property
System(屬性系統(tǒng))。 - Document Servies和XPS Viewer則提供了基本的打印和表報(bào)服務(wù),可以通過(guò)這些組件實(shí)現(xiàn)自定義的打印和顯示效果。
基于上面的特性以及我們使用的情況可以總結(jié)出:
在輸入方面:WPF支持鍵盤、鼠標(biāo)、手寫筆、觸摸屏,藍(lán)牙錄入、視頻撲捉等,所以基本沒(méi)有任何限制,在和外部設(shè)備的交互上:有驅(qū)動(dòng)、COM、Win32或通信協(xié)議支持的任何設(shè)備。打印和報(bào)表方面:可訪問(wèn)打印對(duì)話框、打印隊(duì)列、打印窗體、控件以及很多可選操作,同時(shí)對(duì)報(bào)表也支持得很好。同時(shí)支持流文檔和固定文檔,對(duì)命令的支持以及對(duì)文件的無(wú)限制訪問(wèn),最后尤其在動(dòng)畫、圖形圖像、3D、影像的支持相當(dāng)好(其他技術(shù)是很難做到的),所以WPF除了在性能方面存在著缺陷以外,其他方面可以說(shuō)是做得非常優(yōu)秀,同時(shí)我們有信心相信微軟會(huì)在這方面做得更好!
五. WPF基礎(chǔ)及核心概念
1,基礎(chǔ)概念
從2007年開始接觸WPF/Silverlight以來(lái),對(duì)學(xué)習(xí)和使用它們有自己的一些淺薄心得,所以首先讓我們來(lái)看看WPF的各個(gè)基礎(chǔ)概念:
- Application、Window、Navigation、Dispatcher: 這里強(qiáng)調(diào)一個(gè)應(yīng)用程序的基本組成部分,也就是說(shuō)它是每一個(gè)項(xiàng)目都會(huì)遇到的概念!
- 框架結(jié)構(gòu)及類繼承結(jié)構(gòu): 沒(méi)有一個(gè)宏觀的認(rèn)識(shí)作為燈塔,是一件很危險(xiǎn)的事情,尤其在做深入研究的時(shí)候!
- XAML基礎(chǔ): 作為WPF的主打概念,它似乎起著不可估量的作用,這也是大家接觸WPF的首要概念!
- 布局基礎(chǔ): 每一個(gè)應(yīng)用程序,如果沒(méi)有良好的布局,似乎是一個(gè)不可想象的事情,在WPF中提供了很多布局元素,同時(shí)也提供了很多擴(kuò)展點(diǎn)!
- WPF的邏輯樹和視覺(jué)樹: 它很有作用,但也很頭痛,很多錯(cuò)誤不得不歸功于它!
- 依賴屬性、路由事件、Binding、命令: 核心中的核心,所以我們把它列為重點(diǎn)講解對(duì)象,后面分開闡述!
- 資源、樣式、模板: 在很多程度上,它吸取了之前WEB方面的優(yōu)勢(shì),這三個(gè)功能在很大程度上提高了復(fù)用,同時(shí)也規(guī)范了項(xiàng)目!
- 尺寸縮放、定位與變換元素: 由于是矢量元素,所以在做各種圖形圖像操作的時(shí)候就比較如魚得水!
- WPF控件分類介紹與使用技巧: 微軟的每一種UI相關(guān)的技術(shù)都會(huì)伴隨強(qiáng)大的控件庫(kù),有了它們可以大大減輕開發(fā)的難度!
- 用戶控件和自定義控件開發(fā): 和WinForm、ASP.NET一樣,開發(fā)自定義控件也很簡(jiǎn)單且類似,這里強(qiáng)調(diào)控件的多種分類以及區(qū)別對(duì)待!
- 多語(yǔ)言、皮膚和主題: 開發(fā)一個(gè)稍微大型的應(yīng)用程序都會(huì)遇到多語(yǔ)言、皮膚和主題,在WPF中做這些元素也非常簡(jiǎn)單!
- 2D圖形: WPF創(chuàng)建和使用2D圖形主要集中在3個(gè)重要的數(shù)據(jù)類型之上——Drawing,Visual,Shape,所以需要分別進(jìn)行研究!
- 3D圖形: WPF之所以能帶來(lái)絢麗且強(qiáng)大的3D圖形功能,這得歸功于DirectX 技術(shù),并且提供的接口也非常簡(jiǎn)單,這也使大量動(dòng)畫應(yīng)用成為可能!
- 動(dòng)畫(幾種動(dòng)畫的應(yīng)用):動(dòng)畫無(wú)疑是WPF中最吸引人的特色之一,因?yàn)橐幌氲絼?dòng)畫大家可能都會(huì)提到Flash,WPF的確也使動(dòng)畫變得非常簡(jiǎn)單!
- 音頻、視頻、語(yǔ)音: 這里強(qiáng)調(diào)的影音相關(guān)的功能,由于直接使用DirectX,所以較之前的技術(shù),WPF在顯示效果和質(zhì)量上可謂是質(zhì)的飛躍!
- 文檔、打印、報(bào)表: 強(qiáng)調(diào)企業(yè)使用的一般功能,在WPF中也得到了很好的實(shí)現(xiàn),這也是大量管理應(yīng)用程序使用WPF的前提!
- Win32、Windows Form以及ActiveX之間的互用性:這里強(qiáng)調(diào)與其他技術(shù)之間互用的兼容性,當(dāng)然,在WPF中對(duì)這些技術(shù)提供了很好的支持!
- 部署及更新應(yīng)用程序:和其他客戶端技術(shù)一樣,WPF的部署與自動(dòng)更新也比較容易,除了傳統(tǒng)的三種方法以外,還提供了XBAP的方式,不過(guò)已經(jīng)逐漸被Silverlight所取代。
- WPF的開發(fā)模式:其他層可以保持不變,針對(duì)Presentation提供了MVC 模式、MVP模式 、MVVM 模式。
- 項(xiàng)目和性能相關(guān):WPF在諸多方面都做得很好,除了滿足其他客戶端技術(shù)的功能外,也有自己的獨(dú)特一面。在性能方面,只要多注意一些細(xì)節(jié),就可以超過(guò)預(yù)期的滿足企業(yè)的需求。
2,核心概念
可以看到上面的基礎(chǔ)概念很多,但圣殿騎士認(rèn)為核心概念主要有以下三點(diǎn):
A,依賴屬性體系
首先從依賴屬性基本介紹講起,然后過(guò)渡到依賴屬性的優(yōu)先級(jí)、附加屬性、只讀依賴屬性、依賴屬性元數(shù)據(jù)、依賴屬性回調(diào)、驗(yàn)證及強(qiáng)制值、依賴屬性監(jiān)聽、代碼段 (自動(dòng)生成) 等相關(guān)知識(shí),最后我們會(huì)模擬一個(gè)WPF依賴屬性的實(shí)現(xiàn),來(lái)看看它里面的內(nèi)部究竟是怎樣處理的,這樣就可以幫助我們更好的認(rèn)清它的本質(zhì),出現(xiàn)問(wèn)題的時(shí)候我們也可以根據(jù)原理快速找到原因。
B,事件體系
講到WPF事件體系,我們就不得不來(lái)一場(chǎng)短暫旅行,由于圣殿騎士之前是從C和C++過(guò)渡到.NET和Java,所以對(duì)Win32程序有一些粗淺的認(rèn)識(shí),不管是Win32/C++還是MFC/C++,在窗體和事件處理上本質(zhì)都是用消息(Message)來(lái)進(jìn)行通信,只不過(guò)MFC對(duì)這些繁雜和通用的代碼進(jìn)行了一些封裝,到WinForm和WPF也不例外,無(wú)疑底層還是通過(guò)這些消息在傳遞操作。有了Win32->MFC->WinForm->WPF這種Message的演變之后,我們必須得認(rèn)識(shí)其中的一些核心概念,比如函數(shù)指針、委托回調(diào)、委托和事件以及現(xiàn)在提的路由事件。由于這些知識(shí)太多,所以不進(jìn)行深究,在這里我們只研究委托和事件的一些知識(shí)、委托和事件實(shí)現(xiàn)原理、路由事件的原理以及路由事件的使用,通過(guò)這么一來(lái)回,可能大家會(huì)對(duì)路由事件有一個(gè)比較清晰的認(rèn)識(shí),最主要的是能在項(xiàng)目中運(yùn)用自如。
C,Binding
前面講了WPF的依賴屬性體系和事件體系,這里再講第三個(gè)核心概念——Binding,WPF 綁定可以在源數(shù)據(jù)對(duì)象和UI 控件間建立聯(lián)系,實(shí)現(xiàn)單向或雙向變更通知,以此實(shí)現(xiàn)更好的業(yè)務(wù)邏輯和UI的分離。也正是因?yàn)锽inding,才使得UI和業(yè)務(wù)邏輯的耦合隔離變得如此輕松,也正是因?yàn)锽inding,我們才實(shí)現(xiàn)了MVVM模式,所以Binding在這個(gè)過(guò)程中起到了核心作用。同時(shí)我們也要注意到Binding的知識(shí)點(diǎn)非常多,所以就分成三大塊來(lái)講解。
大家可能會(huì)說(shuō)為什么三大核心不包含其他概念?如為什么沒(méi)有Command?為什么沒(méi)有動(dòng)畫?為什么沒(méi)有3D?其實(shí)這些技術(shù)都是比較靠上層的一些技術(shù)細(xì)節(jié),在最底層還是依賴于上面的三大核心功能,具體本文就不再詳細(xì)闡述了,后面的文章再續(xù)。
六. WPF工具
WPF工具主要分為開發(fā)工具和其他幫助工具,當(dāng)然這里只是列出了使用頻率最高且常見的一些工具。
開發(fā)工具:
Visual Studio 2005/2008/2010
Expression Design 2/3/4
Expression Blend 2/3/4
Expression Encoder 2/3/4
其他常用工具:
KaXaml
WPF Inspector
Snoop
XAML Power Toys
WPF Performance Suite
基本上就用到了以上的一些開發(fā)和幫助工具,具體使用由于受篇幅所限,這里就不做過(guò)多介紹,后面會(huì)開單獨(dú)的篇幅來(lái)詳述。
本篇小結(jié)
由于“WPF企業(yè)內(nèi)訓(xùn)全程實(shí)錄”這篇文章花了十多個(gè)晚上的時(shí)間,所以內(nèi)容涵蓋面廣且文章較長(zhǎng)。為了提高閱讀質(zhì)量,我把它拆分成了三篇,今天先發(fā)布內(nèi)容較少且較簡(jiǎn)單的上篇,下周一、二會(huì)接著發(fā)布其余兩篇,敬請(qǐng)期待!最后聲明一下,由于圣殿騎士才識(shí)淺薄,所以以上觀點(diǎn)只是個(gè)人的看法與心得,遺漏和錯(cuò)誤之處也敬請(qǐng)海涵。懷著技術(shù)分享與交流的態(tài)度分享出來(lái),希望各位多多指教!
NET技術(shù):WPF企業(yè)內(nèi)訓(xùn)全程實(shí)錄(上),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。