獨特思路分析WPF架構


本篇將從如下三點分析學習WPF架構。
1、WPF總體結構
2、WPF類結構
3、WPF核心功能

一、WPF總體結構

1、先看看下面兩張圖,第一張來自書《Pro WPF in C# 2010.pdf》這本書,第二張來自MSDN。

  第一張圖把WPF架構分為三層(托管層,非托管層,操作系統組件層)來描述。但是有兩個問題:1,為什么不加入CLR層,畢竟托管代碼是在CLR上運行的。2,為什么是Direct3D,它只是DirectX的一個子集,DirectX的其它功能沒用上嗎?MSDN這張圖有了CLR層,但是又缺少了WindowsBase.dll,WindowsCodecs.dll這兩個組件。

2、自己畫架構圖。

  這樣就完整多了。值得注意的地方是,在托管層里面有條分割線,分為核心部分和框架部分。

二、WPF類結構

1、WPF架構定義的類有很多,我們了解主要類,其它類可以用反編譯工具去查看,可以看到源碼。也來看看兩張圖吧,第一張來自深入淺出WPF》國內的一本好書,另一張來自 Pro WPF in C# 2010.pdf 這本書。

  第一張畫的類多一點,亮點是有條分割線,線上面的類屬於核心部分,線下面的類屬於框架部分。第二張的亮點是給出了哪些是抽象類,哪些是實體類。

2、比較一下很明了了吧,自己的類圖就不畫了。偷懶:)

三、WPF核心功能

1、Dispatcher子系統,位於WindowsBase.all。負責WPF的線程調度。WPF鼓勵單線程關聯模式(STA ),當然也可以寫多線程程序。
2、Visual子系統。位於PresentationCore.dll。負責界面的渲染呈現。與非托管層通信。其繪制界面的原理跟GDI比也有改進。它使用了緩存方法,充分利用顯卡,可以繪制更復雜的圖形,性能更好。
3、Property子系統。位於PresentationCore.dll。實現的功能有依賴屬性,擴展屬性, 帶INotifyPropertyChange通知的普通屬性。
4、Layout子系統。位於PresentationFramework.dll。Layout系統要計算和定位其控件的位置。是WPF借鑒Web開發的概念,相對Winform來說是創新。
5、Event子系統。位於PresentationFramework.dll。全新改進的事件系統。提供隧道( tunnel )和冒泡( bubble )兩種事件。
6、Binding子系統。位於PresentationFramework.dll。實現數據綁定機制。
7、Style and Templates。位於PresentationFramework.dll。樣式和模板功能。也是借鑒Web開發模式。
8、圖形動畫API等。位於PresentationFramework.dll。

  對核心功能,在本篇不深入分析。

 

參考書籍:

《深入淺出WPF》和《 Pro WPF in C# 2010.pdf 》

參考文章:http://msdn.microsoft.com/en-us/library/ms750441.aspx 

 

 


免責聲明!

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



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