WPF簡介 Windows Presentation Foundation(WPF)是微軟新一代圖形系統,運行在.NET Framework 3.0架構下,為用戶界面、2D/3D 圖形、文檔和媒體提供了統一的描述和操作方法。基於DirectX 9/10技術的WPF不僅帶來了前所未有的3D界面,而且其 ...
WPF簡介
Windows Presentation Foundation(WPF)是微軟新一代圖形系統,運行在.NET Framework 3.0架構下,為用戶界面、2D/3D 圖形、文檔和媒體提供了統一的描述和操作方法。基於DirectX 9/10技術的WPF不僅帶來了前所未有的3D界面,而且其圖形向量渲染引擎也大大改進了傳統的2D界面,比如Vista中的半透明效果的窗體等都得益於 WPF。微軟還提供了專門的界面開發語言XAML(Extensible Application Markup Language,可擴展應用程式標記語言),使得界面描述代碼和程式代碼得以分開,從而提高了開發效率並有利於團隊開發。
Windows Presentation Foundation https://msdn.microsoft.com/zh-cn/library/ms754130(v=vs.110).aspx
WPF中的一些重要組件
WPF使用多層體繫結構。在頂層,應用程式與完全由托管C#代碼編寫的一組高層服務進行交互。
- PresentationFramework.dll包含WPF頂層的類型,包括哪些表示視窗、面板以及其他類型控制項的類型。它還是想高層編程抽象,如樣式。
- PresentationCore.dll包含了基礎類型,如UIElement類和Visual類,所有形狀類和控制項都繼承自這兩個類。
- WindowsBase.dll包含了更多的基本要素,如DispatcherObject類和DependencyObject類,這兩個類引入了依賴屬性。
- milcore.dll是WPF渲染系統的核心,也是媒體集成層(Media Integration Layer,MIL)的基礎。其合成引擎將可視化元素轉換為Driect3D所期望的三角形和紋理。
- WindowsCodecs.dll是一套提供圖像支持的低級API,例如處理、顯示以及縮放點陣圖和JPEG圖像。
- Direct3D是一套低級API,WPF應用程式中的所有圖形都由它進行渲染。
- User32用於解決哪些程式實際占有桌面的哪一部分。但在WPF中,它不負責渲染通用控制項
類層次結構
WPF核心命名空間以System.Windows開頭(如System.Windows、System.Windows.Controls、....)。下圖為WPF中比較重要的幾個類。
【System.Threading.DispatcherObject】
WPF應用程式使用單線程(STA)模型,整個用戶界面由單個線程擁有,即從另一個線程與用戶界面元素進行交互是不安全的。通過繼承DispatcherObject類,用戶界面中的每個元素都可以檢查代碼是否在正確的線程上運行,並能通過訪問調度程式為用用戶界麵線程封送代碼。
【System.Windows.DependencyObject】
在WPF中,主要是通過屬性和屏幕上的元素進行交互。通過繼承DependencyObject類,WPF類可獲得對依賴項屬性的支持
【System.Windows.Media.Visual】
在WPF視窗中顯示的每個元素本質上都是Visual對象。可將Visual類視為繪圖對象,其中封裝了繪圖指令、如何執行繪圖的附加細節(如透明度、剪裁以及變換設置)以及基本功能(如命中測試)。任何繼承自Visual的類都能夠在視窗中顯示出來。
【System.Windows.UIElement】
UIElement類增加了對WPF本質特征的支持,如焦點、佈局、輸入和事件。
【System.Windows.FrameworkElement】
FrameworkElement類實現了一些全部由UIElement類定義的成員。如UIElement為佈局設置了基礎,FrameworkElement類提供了支持它的重要屬性(如Margin、HorizontalAlignment)
【System.Windows.Controls.Control】
Control與用戶進行交互的元素。
【System.Windows.Controls.ContentControl】
ContentControl類是所有具有單一內容的控制項的基類。
【System.Windows.Controls.ItemsControl】
ItemsControl類是所有顯示選項集合的控制項的基類。如ListBox、TreeView...
【System.Windows.Controls.Panel】
Panel類是所有佈局容器的基類。