WPF(Windows Presentation Foundation)是微軟推出的基於Windows 的用戶界面框架,由 .NET Framework 3.0 開始引入,與WCF (Windows Communication Foundation)及 WF(Windows Workflow Fou... ...
前言
1.基本概念
WPF(Windows Presentation Foundation)是微軟推出的基於Windows 的用戶界面框架,由 .NET Framework 3.0 開始引入,與WCF (Windows Communication Foundation)及 WF(Windows Workflow Foundation)並行為新一代 Windows操作系統以及 WinFX 的三個重大應用程式開發類庫。
2.功能定位
對於一般程式而言通常包含3層架構:數據層、業務邏輯層、表現層,這三層結構的功能大致如下:
數據層:
存儲數據。多由資料庫構成
業務邏輯層:
根據需求實現業務功能。通過一組Service向表現層公開功能,通過DAL(Data Access Layer)與數據層進行交互
表現層:
向用戶展示數據。通常被稱為客戶端程式
WPF的功能是用來編寫應用程式的表現層
擴展:業務邏輯層——WCF、WF;數據訪問層——WCF DataService、WCF RIA Service
3.功能結構
表示層程式一般包括以下四種功能性代碼
-
數據模型:現實世界中事物和邏輯的抽象。
-
業務邏輯:數據模型之間的關係與交互。
-
用戶界面:由控制項構成的、與用戶進行交互的界面,用於把數據展示給用戶並響應用戶的輸入。
-
界面邏輯:控制項與控制之間的關係與交互。
在WPF出現之前,Windows Forms、ASP.NET(Web Forms)等技術均使用“事件驅動”理念,界面邏輯和業務邏輯容易糾纏在一起,造成代碼結構複雜難懂、bug難以排除。而WPF技術則是“數據驅動”。
事件驅動:用戶每進行一個操作用會激發程式發生一個事件,事件發生後,用於響應事件的事件處理器就會執行。事件處理器是一個方法(函數),在這個方法中,程式員可以處理數據或調用別的方法,這樣,程式就在事件的驅動下向前執行了。事件驅動的數據是靜態的、被動的;界面控制項是主動的、界面邏輯與業務邏輯之間的橋梁是事件。
數據驅動:當數據發生變化時,會主動通知界面控制項、推動控制項展示最新的數據;同時,用戶對控制項的操作會直接送達數據。在數據驅動理念中,數據占據主動地位、控制項和控制項事件被弱化(控制項事件一般只參與界面邏輯,不再染指業務邏輯,使程式複雜度得到有效控制)。數據與界面之間的橋梁是數據關聯(DataBinding),通過這個橋梁,數據可以流向界面,再從界面流回數據源。
在WPF中,把能夠展示數據、響應用戶操作的UI元素稱為控制項(Control)。控制項所展示的數據稱為控制項的“數據內容”;控制項在響應用戶的操作後會執行自己的一些方法或以事件(Event)的形式通知應用程式(程式員可以決定如何處理這些事件),稱為控制項的“行為”或“演算法內容”。
4.技術結構
WPF與Silverlight的技術對比:
技術項目 | 在WPF中 | 在Silverlight中 |
---|---|---|
XAML語言 | 完整 | 完整 |
控制項 | 完整 | 完整 |
佈局 | 完整 | 完整 |
Binding | 完整 | 基本完整 |
依賴屬性 | 完整 | 基本完整 |
路由事件 | 完整 | 簡化 |
命令 | 完整 | 無 |
資源 | 完整 | 完整 |
控制項模板 | 完整 | 基本完整 |
數據模板 | 完整 | 基本完整 |
繪圖 | 完整 | 完整 |
2D/3D動畫 | 完整 | 簡化 |
類比於Web前端,XAML可以看做HTML+CSS,用作用戶界面的編寫。業務邏輯的具體實現是通過C#編寫,類比於JavaScript。另外,WPF中的技術點與Vue是極其相似的,可以對比學習。
個人小結
WPF是一個用來編寫表現層的工具,使用數據驅動的理念,採用MVVM模式,UI界面與業務邏輯分離。