前言
WPF(Windows Presentation Foundation)是專門用來編寫程序表示層的技術和工具。它是微軟新一代圖形展示繫統,是用戶界面技術進步的重要標志。使用WPF編寫的程序比之前的WinForm程序更加簡潔清晰。WPF技術適用於微軟平臺下的桌面繫統、瀏覽器、Windows Phone的開發。因為微軟程序的開發理念都一樣,僅在類庫方面有一些差別。
本書詳細介紹WPF中XAML的語法結構、布局方式、常用控件、數據驅動UI的理念、路由事件、圖形基礎、動畫與媒體、動作原則、資源與樣式及MVVM設計模式,並通過大量的案例向讀者展示WPF的設計思想。案例組織采用分層遞進疊加方式,讓程序從小變大,由易到難,能夠使讀者迅速地熟悉編寫程序的思想路徑,體會到編寫程序的樂趣。全書共12章,前4章是有關WPF基礎的編程內容和界面UI設計,從第5章開始是WPF的高級進階。各章內容概述如下。
第1章介紹WPF的編程機制。采用逐層深入的Button案例,講解WPF平臺特性。通過對WPF的運行機制及類層次結構講解,從而認識WPF的體繫結構。
第2章介紹XAML可擴展的應用程序聲明式語言的樹形結構、復雜屬性、附加屬性、xmlns指令和名稱空間中的標記擴展等。
第3章詳細介紹WPF布局原則及各布局面板的適用場合。重點說明Grid從結構中分離布局、尺寸模型、共享尺寸組、跨越行列等特征,並演示了Grid的多種用法。
第4章介紹WPF控件內容模型和模板的新概念。重素合成、富內容和簡單的編程模型的控件原則。在此基礎上,學習WPF的內置控件。
第5章介紹數據驅動模型、數據綁定原理及數據綁定的用法。
第6章從Windows操作繫統的消息機制出發,介紹事件模型。在WPF中引入路由事件機制,可采用冒泡、隧道、直接3種策略。
第7章從常用的幾素出發,介紹繪制圖畫、2D形狀及屬性,讓讀者進一步認識WPF 3D三維空間坐標繫、模型、材質、光源、照相機和變換。
第8章介紹動畫工作原理。WPF動畫根據計算機的性能和當前進程的繁忙程度,盡可能地增大幀率,比傳統動畫流暢,實現方式簡捷。同時還介紹WPF中動畫的常用類型、集成方式和對音頻與視頻文件的播放方式。
第9章介紹動作使用原則、命令繫統及觸發器使用方式。
第10章介紹資源的定義、資源類型、適用範圍、資源的靜態與動態引用方式。特別強調資源字典要遵循“先創建後使用”的規則。
第11章重點介紹樣式的構成、如何使用樣式及模板,並演示WPF實現換膚的操作步驟。
第12章介紹軟件設計模式的起源、概念和原則。對比MVC、MVP和MVVM 3種設計模式的通信方式的差別,重點講解MVVM設計模式的框架、其三大組件內容結構,用基於MVVM模式的計算器案例證明WPF數據驅動UI的設計思想。
本書由劉晉鋼主編,其中第1、4、12章由劉晉鋼編寫,第2、3章由熊風光編寫,第6、7章由況立群編寫,第8、9章由劉晉霞編寫,第10、11章由張麟華編寫,第5章由李麗編寫。
本書既可作為高等學校計算機專業學生用書,也可作為計算機從業人員的參考書。作為教材,本書既適用於計算機專業UI設計、軟件開發、人機交互技術等課程,也可供職業技術學院計算機專業學生使用。通過本書的學習,讀者可以掌握WPF的核心技術,提升程序設計能力,為以後的工作和研究打下堅實的基礎。
讀者可在清華大學出版社網站(www.tup.com.cn)免費下載本書所有案例的源代碼、與本書配套的電子課件以及習題參考答案。使用本書時,遇到資源下載問題,請聯繫責任編輯fuhy@tup.tsinghua.edu.cn或聯繫本書作者84161924
@qq.com。
在此,特別感謝劉子民對本書提供的技術支持和幫助,也感謝本書的責任編輯付弘宇對本書所做的審核工作。由於編者的水平有限,書中難免存在不足之處,懇請廣大讀者批評指正。
教學建議
根據突出應用的原則,從應用層次要求角度考慮,可把“WPF編程基礎”課程的教學內容分為基礎學習內容、高級進階內容和提升應用研發能力三部分。
基礎學習:
本書的前4章內容是有關WPF基礎的編程內容和界面UI設計。詳細介紹WPF中XAML的語法結構、布局方式和常用控件,涵蓋WPF的新特性、體繫結構、XAML基礎語法知識、XAML文檔的樹形結構和常用屬性,以及WPF布局原則及布局面板、WPF控件模型、模板及常用控件。學完前4章,讀者可以做出賞心悅目的用戶界面。
高級進階:
本書的第5章到第9章是WPF的高級進階。詳細介紹數據驅動UI的理念、圖形基礎、動畫與媒體和動作原則。這部分內容涉及WPF的核心技術,將事件驅動模型提升到數據驅動UI的理念上來,讓UI與業務邏輯真正地分離,並使前臺的設計師和後臺的程序員各司其職。
提升應用:
本書的第10章到第12章是提升學生應用能力部分。詳細介紹資源的類型、引用方式、資源字典、樣式的構成、使用樣式的方法、模板及MVVM設計模式。目前學生開發的不少項目多半都廢棄,究其原因主要是,資源分配不合理,樣式不美觀,沒有采用好的設計模式。這部分內容針對上述問題編寫,以提高學生的應用研發能力。
本書用於教學的建議如表1所示。
表1教學建議
課程名
(授課對像)WPF編程基礎(授課對像可以是計算機科學與技術、軟件工程等專業理工類四年制本科)48學時。注:
三年制專科可參考此計劃適當修改(例如,可延長到64學時,難度適當降低)
教學目的和要求掌握WPF核心技術、體繫結構、數據驅動UI的設計思想及MVVM設計模式,為提升程序開發能力奠定基礎
續表
必要的先修課程數據結構、操作繫統和面向對像程序設計語言(如C#)
後續可開設實踐課程WPF項目實訓、基於Kinect的體感設計及手勢識別項目研發
章次(學時)要求學生了解內容要求學生掌握內容實踐操作項目
第1章引言(2)WPF的地位、體繫結構及應用前景WPF的新特性,布局與控件中涉及的容器控件的簡單用法數據集成處理能力章節中的Button導出的案例
第2章XAML(2)XAML與HTML的異同點、XAML文檔的樹形結構XAML的名稱空間及屬性、類型轉換器的用法仿類型轉換器中案例,重做一個將字符串轉換成對像實例
第3章布局(4)合成布局模型、布局機制、布局常用屬性布局面板的用法,布局嵌套生活中常見的布局應用(聊天室、Web等)
第4章控件素合成、富內容和簡單的編程模型的控件原則WPF控件的基本用法、構建控件的思想、用戶自定義控件圖標設計、登錄用戶頁面、遊戲初始化頁面、桌面、主題頁面等
第5章數據(6)數據模型的發展過程及微軟曾用過的數據模型數據綁定機制、值轉換機制、數據綁定模型、數據綁定用法INotifyPropertyChanged接口調用、數據綁定列表框
第6章路由事件(6)消息概念、消息循環、Windows編程原理、附加事件路由事件工作機制、RoutedEventArgs類、路由策略實現自定義路由事件,分別采用隧道、冒泡和直接3種策略
第7章圖形基礎(4)常用幾何圖形、在WPF 3D中的基本概念,包括WPF的坐標繫、各種光源和照相機的工作原理WPF圖像特效、繪制圖畫、控件與形狀組合、常用變換使用MeshGeometry3D定義模型,創建三維物體
第8章動畫與媒體
(2)動畫的概念、原理,傳統動畫與WPF動畫異同點線性插值動畫、關鍵幀動畫、路徑動畫,動畫集成設計簡單的動畫
第9章動作(6)動作原則、命令繫素間的關繫、WPF命令庫使用各種觸發器、命令與數據綁定實現Windows記事本功能
第10章資源(4)資源的定義、資源的類型、資源的可用範圍、使用資源的意義資源的靜態引用與動態引用方式、創建和使用資源字典使用資源字典
第11章樣式(4)樣式的作用定制模板、使用樣式的方法設置主題、鎖屏、更換壁紙(皮膚)
第12章MVVM設計模式(4)軟件設計模式的概念、原則、由來,MVC、MVP和MVVM發展過程MVVM設計模式的框架及其三大組件內容結構及該模式的優點完成基於MVVM的簡單計算器,並為該計算器的按鈕設計統一風格的樣式
編者
2018年1月