WPF編程寶典——使用C# 2012和.NET 4.5(第4版)(.NET開發(fā)經(jīng)典名著)國內(nèi)首本基于C# 2012和.NET 4.5 WPF權(quán)威著作,前幾版深受讀者好評
定 價:128 元
叢書名:NET開發(fā)經(jīng)典名著
- 作者:(美)麥克唐納 著,王德才 譯
- 出版時間:2013/8/1
- ISBN:9787302327738
- 出 版 社:清華大學出版社
- 中圖法分類:TP312
- 頁碼:932
- 紙張:膠版紙
- 版次:4
- 開本:大16開
書全面講解WPF的實際工作原理,是一本W(wǎng)PF權(quán)威著作。在緊貼實用示例這一思想的引導(dǎo)下,列出實用提示,引導(dǎo)以專業(yè)的方式使用WPF。本書開篇介紹WPF基本概念以便為您奠定堅實的基礎(chǔ),并將現(xiàn)有C#技能作為引用框架,然后討論高級概念,結(jié)合實際演示它們的用法,并重點強調(diào)了可由此節(jié)省的時間和人力成本。
本書特色
u 理解WPF編程的基礎(chǔ)知識:從XAML到控件,乃至數(shù)據(jù)流
u 開發(fā)實用的應(yīng)用程序,帶您實際了解導(dǎo)航、本地化和開發(fā)
u 探討WPF提供的高級用戶界面控件
u 分析如何在WPF中管理文檔,涵蓋了文本布局、打印和文檔打包等所有技術(shù)
u 使用圖形和多媒體來增強應(yīng)用程序
l WPF權(quán)威著作,內(nèi)容更新至C#2012和.NET4.5,前幾版深受讀者好評l 零起點闡釋WPF核心概念和工作機制,幫助讀者從入門到精通l 精彩的示例和詳細的講解,本書后而不重,讀起來易學易懂
.NET問世之初便引入了一些重要的新技術(shù),包括編寫Web應(yīng)用程序的全新方法(ASP.NET)、連接數(shù)據(jù)庫的全新方法(ADO.NET)、新的類型安全的語言(C#和VB.NET)以及托管的運行時(CLR)。在這些新技術(shù)中,其中一項重要技術(shù)是Windows窗體,它是用于構(gòu)建Windows應(yīng)用程序的類庫。
盡管Windows窗體是一個功能完備的工具包,但它綁定到舊式的核心Windows技術(shù)。最重要的是,Windows窗體依靠Windows API創(chuàng)建標準用戶界面元素的可視化外觀,如按鈕、文本框和復(fù)選框等。所以這些要素在本質(zhì)上是不可定制的。例如,如果希望創(chuàng)建時髦的光暈按鈕,就需要創(chuàng)建自定義控件,并使用低級的繪圖模型為按鈕(各種不同的狀態(tài))繪制各個方面的細節(jié)。更糟的是,普通窗口被切割成不同的區(qū)域,每個控件完全擁有自己的區(qū)域。所以沒有較好的繪制方法可將一個控件的內(nèi)容(如按鈕背后的輝光效果)延伸到其他控件所占的區(qū)域中。更不要指望實現(xiàn)動畫效果,如旋轉(zhuǎn)文本、閃爍按鈕、收縮窗口以及實時預(yù)覽等,因為對于這些效果必須手工繪制每個細節(jié)。
WPF(Windows Presentation Foundation)通過引入一個使用完全不同技術(shù)的新模型改變了所有這一切。盡管WPF也提供了大家熟悉的標準控件,但它“自行”繪制每個文本、邊框和背景填充。所以WPF的功能更強大,可以改變渲染屏幕上所有內(nèi)容的方式。使用這些特性,可重新設(shè)置常見控件的樣式(如按鈕),并且通常不需要編寫任何代碼。同樣,可使用變換對象旋轉(zhuǎn)、拉伸、縮放以及扭曲用戶界面中的所有內(nèi)容,甚至可使用WPF動畫系統(tǒng)對用戶界面中的內(nèi)容進行變換。并且因為WPF引擎將在窗口上渲染的內(nèi)容作為單獨操作的一部分,所以能處理任意多層相互重疊的控件,即使這些控件具有不規(guī)則的形狀且是半透明的也同樣如此。
在WPF這些新特性的背后是基于DirectX的功能強大的基礎(chǔ)結(jié)構(gòu),DirectX是一套硬件加速的圖形API,通常用于開發(fā)最前沿的計算機游戲。這意味著可使用豐富的圖形效果,而不會損失性能,而使用Windows窗體實現(xiàn)此類效果會嚴重影響程序運行的性能。實際上,甚至可使用更高級特性,例如對視頻文件和3D內(nèi)容的支持。使用這些特性以及優(yōu)秀的設(shè)計工具,可創(chuàng)建出令人賞心悅目的用戶界面和可視化效果,而使用Windows窗體技術(shù)是無法實現(xiàn)這些效果的。
還有必要指出,可使用WPF的標準控件和簡單的可視化外觀來構(gòu)建普通Windows應(yīng)用程序。實際上,在WPF中,可以像在舊式Windows窗體模型中那樣方便地使用通用控件。更值得一提的是,WPF增強了商業(yè)開發(fā)人員所需要的特性,包括大幅改進的數(shù)據(jù)綁定模型、一套用于打印以及管理打印隊列的新類,以及用于顯示大量格式化文本的文檔特性。甚至提供了用于構(gòu)建基于頁面的應(yīng)用程序的模型,這種應(yīng)用程序可在Internet Explorer中流暢運行,并能從Web站點啟動,所有這些操作都不會出現(xiàn)常見的安全警告和令人討厭的安裝提示?傊琖PF將以前Windows開發(fā)領(lǐng)域中的精華與當今的創(chuàng)新技術(shù)融為一體,得以構(gòu)建現(xiàn)代化的富圖形用戶界面。
關(guān)于本書
本書深刻地介紹WPF技術(shù),面向了解.NET平臺、C#語言以及Visual Studio開發(fā)環(huán)境的專業(yè)開發(fā)人員。在學習本書前,不需要具備使用以前版本W(wǎng)PF的經(jīng)驗,而使用過WPF的開發(fā)人員可以通過閱讀每章開頭的“新增功能”來了解WPF新特性。
本書全面描述WPF的所有主要特性,從XAML(用于定義WPF用戶界面的標記語言)到3D繪圖和動畫。本書個別之處會編寫涉及.NET Framework其他特性的代碼,如用于查詢數(shù)據(jù)庫的ADO.NET類。本書中不討論這些內(nèi)容。但如果需要了解有關(guān).NET(而非特定于WPF)的特性的更多信息,請參閱Apress出版的許多專門介紹.NET的書籍。
內(nèi)容概覽
本書共包括33章。如果剛開始學習WPF,將發(fā)現(xiàn)按照章節(jié)順序閱讀本書是最容易的方法,因為后續(xù)章節(jié)常用到前面章節(jié)中演示的技術(shù)。
下面是本書每一章的主要內(nèi)容:
第1章:WPF概述 介紹WPF的體系結(jié)構(gòu),WPF的DirectX基礎(chǔ)設(shè)施,以及新的能自動改變用戶界面尺寸的設(shè)備無關(guān)度量系統(tǒng)。
第2章:XAML 介紹用于定義用戶界面的XAML標準。該章將討論為什么創(chuàng)建XAML以及XAML的工作原理,并將用不同的編碼方法創(chuàng)建基本的WPF窗口。
第3章:布局 深入研究在WPF窗口中用于組織元素的布局面板。該章將分析不同布局策略,并將構(gòu)建一些普通類型的窗口。
第4章:依賴項屬性 介紹WPF如何使用依賴項屬性來支持重要特性,如數(shù)據(jù)綁定和動畫。
第5章:路由事件 介紹WPF如何使用事件路由在用戶界面元素中發(fā)送冒泡路由事件或隧道路由事件,還介紹所有WPF元素都支持的一組基本鼠標、鍵盤以及多點觸控事件。
第6章:控件 分析所有Windows開發(fā)人員都十分熟悉的控件,如按鈕、文本框和標簽,還討論它們在WPF中的區(qū)別。
第7章:Application類 介紹WPF應(yīng)用程序模型。在該章中您將看到如何創(chuàng)建單實例和基于文檔的WPF應(yīng)用程序。
第8章:元素綁定 介紹WPF數(shù)據(jù)綁定。在該章中您將看到如何將任意類型的對象綁定到用戶界面。
第9章:命令 介紹WPF命令模型,使用WPF命令模型可將多個控件連接到同一個邏輯操作。
第10章:資源 介紹如何使用資源在程序集中嵌入二進制文件,以及如何在整個用戶界面中重用重要的對象。
第11章:樣式和行為 解釋WPF樣式系統(tǒng),使用WPF樣式可為一整組控件應(yīng)用一套通用屬性值。
第12章:形狀、畫刷和變換 介紹WPF中的2D繪圖模型。在該章中您將學習如何創(chuàng)建形狀、使用變換改變元素,以及使用漸變畫刷、圖像畫刷和平鋪圖像畫刷繪制特殊效果。
第13章:幾何形狀和圖畫 深入分析2D繪圖。在該章中您將學習如何創(chuàng)建包含弧線和曲線的復(fù)雜路徑,以及如何高效地使用復(fù)雜圖形。
第14章:效果和可視化對象 介紹低級圖形編程。在該章中您將使用像素著色器應(yīng)用Photoshop風格的效果,手動構(gòu)建位圖,并為了優(yōu)化繪圖性能而使用WPF的可視化層。
第15章:動畫基礎(chǔ) 研究WPF的動畫框架,通過WPF動畫框架可使用簡單的聲明式標記將動態(tài)效果集成到應(yīng)用程序中。
第16章:高級動畫 研究更高級的動畫技術(shù),如關(guān)鍵幀動畫、基于路徑的動畫以及基于幀的動畫。該章還將列舉一個詳細示例,展示如何使用代碼創(chuàng)建和管理動態(tài)的動畫。
第17章:控件模板 介紹如何通過插入定制的模板來為任意WPF控件提供動態(tài)的新外觀(以及新行為),您還將看到如何使用模板構(gòu)建能夠換膚的應(yīng)用程序。
第18章:自定義元素 研究如何擴展現(xiàn)有的WPF控件,以及如何創(chuàng)建自己的控件。在該章中您將看到幾個示例,包括基于模板的顏色拾取器、可翻轉(zhuǎn)的面板、自定義的布局容器,以及執(zhí)行自定義繪圖的裝飾元素。
第19章:數(shù)據(jù)綁定 展示如何從數(shù)據(jù)庫獲取信息,將獲取的信息插入到自定義的數(shù)據(jù)對象中,并將這些數(shù)據(jù)對象綁定到WPF控件。您還將學習如何借助虛擬化技術(shù)提高大型數(shù)據(jù)綁定列表的性能,以及如何使用驗證方法捕獲編輯錯誤。
第20章:格式化綁定的數(shù)據(jù) 展示將原始數(shù)據(jù)轉(zhuǎn)換為包含圖片、控件以及選擇效果的富數(shù)據(jù)顯示的一些技巧。
第21章:數(shù)據(jù)視圖 分析如何在數(shù)據(jù)綁定窗口中使用視圖在數(shù)據(jù)項列表中導(dǎo)航,以及應(yīng)用過濾、分類和分組。
第22章:列表、樹和網(wǎng)格 帶您瀏覽WPF中的富數(shù)據(jù)控件,包括ListView、TreeView和DataGrid。
第23章:窗口 分析WPF中窗口的工作原理。在該章中您還將學習如何創(chuàng)建不規(guī)則形狀的窗口,以及如何使用Vista玻璃效果,您還將通過定制任務(wù)欄跳轉(zhuǎn)列表、縮略圖以及圖標重疊實現(xiàn)大部分Windows 7特性。
第24章:頁面和導(dǎo)航 介紹如何使用WPF構(gòu)建頁面,以及保持跟蹤導(dǎo)航歷史。該章還將介紹如何構(gòu)建駐留于瀏覽器中的WPF應(yīng)用程序,這種應(yīng)用程序可從Web站點啟動。
第25章:菜單、工具欄和功能區(qū) 分析面向命令的控件,如菜單和工具欄。在該章還將使用可免費下載的Ribbon控件嘗試更富有現(xiàn)代氣息的用戶界面。
第26章:聲音和視頻 介紹WPF媒體支持。在該章中您將看到如何控制聲音和視頻的播放,以及如何合成動畫和生動鮮活的效果。
第27章:3D繪圖 研究WPF中對繪制3D圖形的支持。在該章將學習如何創(chuàng)建和變換3D對象,以及如何為3D對象應(yīng)用動畫效果,甚至還會看到如何在3D表面上放置可交互的2D控件。
第28章:文檔 介紹WPF的富文檔支持。在該章中您將學習如何使用流文檔以盡可能便于閱讀的方式呈現(xiàn)大量文本,并將學習如何用固定文檔顯示準備打印的頁面,甚至還將學習如何使用RichTextBox控件提供文檔編輯功能。
第29章:打印 演示W(wǎng)PF的打印模型,可通過打印模型在打印文檔中繪制文本和圖形。在該章中您還將學習如何管理頁面設(shè)置和打印隊列。
第30章:與Windows窗體進行交互 分析如何在同一個應(yīng)用程序—— 甚至在同一個窗口中,結(jié)合使用WPF和Windows窗體內(nèi)容。
第31章:多線程 介紹如何創(chuàng)建具有良好響應(yīng)能力,在后臺執(zhí)行耗時任務(wù)的WPF應(yīng)用程序。
第32章:插件模型 展示如何創(chuàng)建可擴展的、能動態(tài)發(fā)現(xiàn)和加載獨立組件的應(yīng)用程序。
第33章:ClickOnce部署 展示如何使用ClickOnce安裝模型部署WPF應(yīng)用程序。
使用本書的前提條件
為運行WPF 4.5應(yīng)用程序,計算機必須安裝Windows 7、Windows 8或帶有Service Pack 2的 Windows Vista,還需要.NET Framework 4.5。為創(chuàng)建WPF 4.5應(yīng)用程序(并打開本書中提供的示例項目),需要安裝Visual Studio 2012,Visual Studio 2012中包含了.NET Framework 4.5。
還有一種選擇。不使用任何版本的Visual Studio,可使用Expression Blend(一種面向圖形的設(shè)計工具)來構(gòu)建和測試WPF應(yīng)用程序。總體而言,Expression Blend是面向圖形設(shè)計人員的工具,他們使用該工具創(chuàng)建絢麗奪目的內(nèi)容;而對于編寫大量代碼的編程人員來說,Visual Studio則是理想工具。本書假定使用的是Visual Studio。如果準備使用Expression Blend,務(wù)必選用明確支持WPF的版本(與某些Visual Studio版本綁定在一起的版本僅用于Metro開發(fā),不支持WPF)。到撰寫本書時為止,支持WPF的Expression Blend版本是稱為Blend + Sketchflow Preview for Visual Studio 2012的預(yù)覽版本,網(wǎng)址是http://tinyurl.com/cgar5lz。
代碼示例和URL
查看Apress網(wǎng)站或www.prosetech.com以下載最新的示例代碼是個好主意。測試在本書中介紹的大部分更復(fù)雜的示例需要用到這些代碼示例,因為在本書示例中那些較次要的細節(jié)通常被忽略了。本書關(guān)注最重要的部分,以免為闡明概念而無謂地占用過多篇幅。
為下載本書的源代碼,可訪問Web站點 http://www.prosetech.com查找本書的頁面,也可從http://www.tupwk.com.cn/downpage下載本書的源代碼。您將發(fā)現(xiàn)在本書中提及的鏈接的列表,從而不需要鍵入任何內(nèi)容就可以找到重要工具和例子。
反饋
本書力爭成為WPF編程愛好者的最佳輔導(dǎo)和參考資料。為達到該目標,您的評論和建議對我們來說是非常有幫助的。您可將本書的缺點、優(yōu)點及其他反饋信息直接發(fā)送到郵箱wkservice@vip.163.com,我們將不勝感激。
atthewMacDonald是一位作家、教育家,曾三次榮膺微軟MVP。他迄今已經(jīng)撰寫了十多本有關(guān).NET編程的書籍,包括ProSilverlight 5 in C#(由Apress于2012年出版)和Beginning ASP.NET4.5 in C#(由Apress于2012年出版) 。他還曾撰寫Your Brain: TheMissing Manual(由O’Reilly Media于2008年出版)一書,該書講述如何最大限度地激發(fā)大腦潛能,出版后受到廣大讀者的熱烈歡迎。Matthew目前與妻子和兩個女兒居住在多倫多。
第Ⅰ部分 基礎(chǔ)知識
第1章 WPF概述 3
1.1 Windows圖形演化 3
1.1.1 DirectX:新的圖形引擎 4
1.1.2 硬件加速與WPF 4
1.2 WPF:高級API 4
1.3 分辨率無關(guān)性 5
1.3.1 WPF單位 6
1.3.2 系統(tǒng)DPI 7
1.3.3 位圖和矢量圖形 9
1.4 WPF體系結(jié)構(gòu) 10
1.5 WPF 4.5 13
1.5.1 WPF工具包 14
1.5.2 Visual Studio 2012 14
1.6 小結(jié) 16
第Ⅰ部分 基礎(chǔ)知識
第1章 WPF概述 3
1.1 Windows圖形演化 3
1.1.1 DirectX:新的圖形引擎 4
1.1.2 硬件加速與WPF 4
1.2 WPF:高級API 4
1.3 分辨率無關(guān)性 5
1.3.1 WPF單位 6
1.3.2 系統(tǒng)DPI 7
1.3.3 位圖和矢量圖形 9
1.4 WPF體系結(jié)構(gòu) 10
1.5 WPF 4.5 13
1.5.1 WPF工具包 14
1.5.2 Visual Studio 2012 14
1.6 小結(jié) 16
第2章 XAML 17
2.1 理解XAML 17
2.1.1 WPF之前的圖形用戶界面 17
2.1.2 XAML變體 19
2.1.3 XAML編譯 19
2.2 XAML基礎(chǔ) 20
2.2.1 XAML名稱空間 21
2.2.2 代碼隱藏類 22
2.3 XAML中的屬性和事件 24
2.3.1 簡單屬性與類型轉(zhuǎn)換器 25
2.3.2 復(fù)雜屬性 26
2.3.3 標記擴展 28
2.3.4 附加屬性 29
2.3.5 嵌套元素 30
2.3.6 特殊字符與空白 32
2.3.7 事件 34
2.3.8 完整的Eight Ball Answer示例 35
2.4 使用其他名稱空間中的類型 36
2.5 加載和編譯XAML 38
2.5.1 只使用代碼 38
2.5.2 使用代碼和未經(jīng)編譯的XAML 40
2.5.3 使用代碼和編譯過的XAML 42
2.5.4 只使用XAML 44
2.6 小結(jié) 45
第3章 布局 47
3.1 理解WPF中的布局 47
3.1.1 WPF布局原則 47
3.1.2 布局過程 48
3.1.3 布局容器 48
3.2 使用StackPanel面板進行簡單
布局 50
3.2.1 布局屬性 52
3.2.2 對齊方式 52
3.2.3 邊距 53
3.2.4 最小尺寸、最大尺寸以及顯式地
設(shè)置尺寸 54
3.2.5 Border控件 56
3.3 WrapPanel和DockPanel面板 57
3.3.1 WrapPanel面板 57
3.3.2 DockPanel面板 58
3.3.3 嵌套布局容器 59
3.4 Grid面板 60
3.4.1 調(diào)整行和列 63
3.4.2 布局舍入 64
3.4.3 跨越行和列 65
3.4.4 分割窗口 66
3.4.5 共享尺寸組 69
3.4.6 UniformGrid面板 72
3.5 使用Canvas面板進行基于
坐標的布局 72
3.5.1 Z順序 73
3.5.2 lnkCanvas元素 74
3.6 布局示例 76
3.6.1 列設(shè)置 76
3.6.2 動態(tài)內(nèi)容 77
3.6.3 組合式用戶界面 79
3.7 小結(jié) 80
第4章 依賴項屬性 83
4.1 理解依賴項屬性 83
4.1.1 定義依賴項屬性 84
4.1.2 注冊依賴項屬性 84
4.1.3 添加屬性包裝器 86
4.1.4 WPF使用依賴項屬性的方式 87
4.1.5 共享的依賴項屬性 88
4.1.6 附加的依賴項屬性 88
4.2 屬性驗證 90
4.2.1 驗證回調(diào) 90
4.2.2 強制回調(diào) 91
4.3 小結(jié) 93
第5章 路由事件 95
5.1 理解路由事件 95
5.1.1 定義、注冊和封裝路由事件 95
5.1.2 共享路由事件 96
5.1.3 引發(fā)路由事件 96
5.1.4 處理路由事件 97
5.2 事件路由 99
5.2.1 RoutedEventArgs類 100
5.2.2 冒泡路由事件 100
5.2.3 處理掛起的事件 103
5.2.4 附加事件 103
5.2.5 隧道路由事件 105
5.3 WPF事件 106
5.3.1 生命周期事件 106
5.3.2 輸入事件 108
5.4 鍵盤輸入 108
5.4.1 處理按鍵事件 109
5.4.2 焦點 111
5.4.3 獲取鍵盤狀態(tài) 112
5.5 鼠標輸入 113
5.5.1 鼠標單擊 115
5.5.2 捕獲鼠標 115
5.5.3 鼠標拖放 116
5.6 多點觸控輸入 118
5.6.1 多點觸控的輸入層次 119
5.6.2 原始觸控 119
5.6.3 操作 122
5.6.4 慣性 124
5.7 小結(jié) 125
第Ⅱ部分 進一步研究WPF
第6章 控件 129
6.1 控件類 129
6.1.1 背景畫刷和前景畫刷 130
6.1.2 字體 132
6.1.3 鼠標光標 136
6.2 內(nèi)容控件 137
6.2.1 Content屬性 138
6.2.2 對齊內(nèi)容 140
6.2.3 WPF內(nèi)容原則 141
6.2.4 標簽 142
6.2.5 按鈕 142
6.2.6 工具提示 145
6.3 特殊容器 151
6.3.1 ScrollViewer 152
6.3.2 GroupBox 154
6.3.3 TabItem 154
6.3.4 Expander 155
6.4 文本控件 158
6.4.1 多行文本 158
6.4.2 選擇文本 159
6.4.3 拼寫檢查 160
6.4.4 PasswordBox 162
6.5 列表控件 162
6.5.1 ListBox 163
6.5.2 ComboBox 166
6.6 基于范圍的控件 166
6.6.1 Slider 167
6.6.2 ProgressBar 168
6.7 日期控件 169
6.8 小結(jié) 171
第7章 Application類 173
7.1 應(yīng)用程序的生命周期 173
7.1.1 創(chuàng)建Application對象 173
7.1.2 派生自定義的Application類 174
7.1.3 應(yīng)用程序的關(guān)閉方式 176
7.1.4 應(yīng)用程序事件 177
7.2 Application類的任務(wù) 179
7.2.1 顯示初始界面 179
7.2.2 處理命令行參數(shù) 180
7.2.3 訪問當前Application對象 181
7.2.4 在窗口之間進行交互 182
7.2.5 單實例應(yīng)用程序 184
7.3 程序集資源 189
7.3.1 添加資源 189
7.3.2 檢索資源 190
7.3.3 pack URI 192
7.3.4 內(nèi)容文件 193
7.4 本地化 193
7.4.1 構(gòu)建能夠本地化的用戶界面 194
7.4.2 使應(yīng)用程序為本地化做好準備 194
7.4.3 管理翻譯過程 195
7.5 小結(jié) 200
第8章 元素綁定 201
8.1 將元素綁定到一起 201
8.1.1 綁定表達式 202
8.1.2 綁定錯誤 203
8.1.3 綁定模式 203
8.1.4 使用代碼創(chuàng)建綁定 205
8.1.5 使用代碼檢索綁定 206
8.1.6 多綁定 207
8.1.7 綁定更新 210
8.1.8 綁定延遲 211
8.2 綁定到非元素對象 211
8.2.1 Source屬性 212
8.2.2 RelativeSource屬性 212
8.2.3 DataContext屬性 213
8.3 小結(jié) 214
第9章 命令 215
9.1 理解命令 215
9.2 WPF命令模型 216
9.2.1 ICommand接口 217
9.2.2 RoutedCommand類 217
9.2.3 RoutedUICommand類 218
9.2.4 命令庫 219
9.3 執(zhí)行命令 220
9.3.1 命令源 220
9.3.2 命令綁定 221
9.3.3 使用多命令源 223
9.3.4 微調(diào)命令文本 224
9.3.5 直接調(diào)用命令 224
9.3.6 禁用命令 225
9.3.7 具有內(nèi)置命令的控件 227
9.4 高級命令 229
9.4.1 自定義命令 229
9.4.2 在不同位置使用相同的命令 230
9.4.3 使用命令參數(shù) 232
9.4.4 跟蹤和翻轉(zhuǎn)命令 233
9.5 小結(jié) 237
第10章 資源 239
10.1 資源基礎(chǔ) 239
10.1.1 資源集合 239
10.1.2 資源的層次 241
10.1.3 靜態(tài)資源和動態(tài)資源 242
10.1.4 非共享資源 243
10.1.5 通過代碼訪問資源 244
10.1.6 應(yīng)用程序資源 244
10.1.7 系統(tǒng)資源 245
10.2 資源字典 246
10.2.1 創(chuàng)建資源字典 246
10.2.2 使用資源字典 247
10.2.3 在程序集之間共享資源 248
10.3 小結(jié) 251
第11章 樣式和行為 253
11.1 樣式基礎(chǔ) 253
11.1.1 創(chuàng)建樣式對象 256
11.1.2 設(shè)置屬性 257
11.1.3 關(guān)聯(lián)事件處理程序 258
11.1.4 多層樣式 259
11.1.5 通過類型自動應(yīng)用樣式 261
11.2 觸發(fā)器 262
11.2.1 簡單觸發(fā)器 262
11.2.2 事件觸發(fā)器 264
11.3 行為 266
11.3.1 獲取行為支持 266
11.3.2 理解行為模型 267
11.3.3 創(chuàng)建行為 268
11.3.4 使用行為 270
11.3.5 Blend中的設(shè)計時行為支持 271
11.4 小結(jié) 271
第Ⅲ部分 圖畫和動畫
第12章 形狀、畫刷和變換 275
12.1 理解形狀 275
12.1.1 Shape類 276
12.1.2 矩形和橢圓 277
12.1.3 改變形狀的尺寸和放置形狀 278
12.1.4 使用Viewbox控件縮放形狀 280
12.1.5 直線 282
12.1.6 折線 283
12.1.7 多邊形 284
12.1.8 直線線帽和直線交點 286
12.1.9 點劃線 287
12.1.10 像素對齊 288
12.2 畫刷 289
12.2.1 SolidColorBrush畫刷 290
12.2.2 LinearGradientBrush畫刷 290
12.2.3 RadialGradientBrush畫刷 292
12.2.4 ImageBrush畫刷 294
12.2.5 平鋪的ImageBrush畫刷 295
12.2.6 VisualBrush畫刷 297
12.2.7 BitmapCacheBrush畫刷 298
12.3 變換 299
12.3.1 變換形狀 300
12.3.2 變換元素 302
12.4 透明 303
12.4.1 使元素半透明 303
12.4.2 透明掩碼 304
12.5 小結(jié) 306
第13章 幾何圖形和圖畫 307
13.1 路徑和幾何圖形 307
13.1.1 直線、矩形和橢圓圖形 308
13.1.2 使用GeometryGroup
組合形狀 309
13.1.3 使用CombinedGeometry融合
幾何圖形 311
13.1.4 使用PathGeometry繪制曲線和
直線 313
13.1.5 微語言幾何圖形 318
13.1.6 使用幾何圖形進行剪裁 319
13.2 圖畫 320
13.2.1 顯示圖畫 322
13.2.2 導(dǎo)出插圖 324
13.3 小結(jié) 326
第14章 效果和可視化對象 327
14.1 可視化對象 327
14.1.1 繪制可視化對象 328
14.1.2 在元素中封裝可視化對象 329
14.1.3 命中測試 332
14.1.4 復(fù)雜的命中測試 334
14.2 效果 338
14.2.1 BlurEffect類 338
14.2.2 DropShadowEffect類 339
14.2.3 ShaderEffect類 340
14.3 WriteableBitmap類 342
14.3.1 生成位圖 342
14.3.2 寫入WriteableBitmap對象 343
14.3.3 更高效的像素寫入 345
14.4 小結(jié) 347
第15章 動畫基礎(chǔ) 349
15.1 理解WPF動畫 349
15.1.1 基于時間的動畫 349
15.1.2 基于屬性的動畫 350
15.2 基本動畫 351
15.2.1 Animation類 351
15.2.2 使用代碼創(chuàng)建動畫 353
15.2.3 同時發(fā)生的動畫 358
15.2.4 動畫的生命周期 358
15.2.5 Timeline類 359
15.3 故事板 362
15.3.1 故事板 363
15.3.2 事件觸發(fā)器 363
15.3.3 重疊動畫 366
15.3.4 同步的動畫 367
15.3.5 控制播放 367
15.3.6 監(jiān)視動畫進度 371
15.4 動畫緩動 373
15.4.1 使用緩動函數(shù) 373
15.4.2 在動畫開始時應(yīng)用緩動與在動畫
結(jié)束時應(yīng)用緩動 374
15.4.3 緩動函數(shù)類 375
15.4.4 創(chuàng)建自定義緩動函數(shù) 377
15.5 動畫性能 379
15.5.1 期望的幀率 380
15.5.2 位圖緩存 382
15.6 小結(jié) 384
第16章 高級動畫 385
16.1 動畫類型回顧 385
16.1.1 動態(tài)變換 386
16.1.2 動態(tài)改變畫刷 390
16.1.3 動態(tài)改變像素著色器 392
16.2 關(guān)鍵幀動畫 393
16.2.1 離散的關(guān)鍵幀動畫 395
16.2.2 緩動關(guān)鍵幀 395
16.2.3 樣條關(guān)鍵幀動畫 396
16.3 基于路徑的動畫 397
16.4 基于幀的動畫 399
16.5 使用代碼創(chuàng)建故事板 402
16.5.1 創(chuàng)建主窗口 403
16.5.2 創(chuàng)建Bomb用戶控件 405
16.5.3 投彈 406
16.5.4 攔截炸彈 409
16.5.5 統(tǒng)計炸彈和清理工作 410
16.6 小結(jié) 412
第Ⅳ部分 模板和自定義元素
第17章 控件模板 417
17.1 理解邏輯樹和可視化樹 417
17.2 理解模板 422
17.2.1 修飾類 424
17.2.2 剖析控件 426
17.3 創(chuàng)建控件模板 428
17.3.1 簡單按鈕 429
17.3.2 模板綁定 430
17.3.3 改變屬性的觸發(fā)器 431
17.3.4 使用動畫的觸發(fā)器 434
17.4 組織模板資源 435
17.4.1 分解按鈕控件模板 436
17.4.2 通過樣式應(yīng)用模板 438
17.4.3 自動應(yīng)用模板 439
17.4.4 由用戶選擇的皮膚 440
17.5 構(gòu)建更復(fù)雜的模板 442
17.5.1 嵌套的模板 443
17.5.2 修改滾動條 445
17.5.3 控件模板示例 450
17.6 可視化狀態(tài) 451
17.7 小結(jié) 452
第18章 自定義元素 453
18.1 理解WPF中的自定義元素 454
18.2 構(gòu)建基本的用戶控件 456
18.2.1 定義依賴項屬性 456
18.2.2 定義路由事件 459
18.2.3 添加標記 460
18.2.4 使用控件 462
18.2.5 命令支持 462
18.2.6 深入分析用戶控件 465
18.3 創(chuàng)建無外觀控件 466
18.3.1 修改顏色拾取器的代碼 466
18.3.2 修改顏色拾取器的標記 467
18.3.3 精簡控件模板 469
18.4 支持可視化狀態(tài) 472
18.4.1 開始編寫FlipPanel類 473
18.4.2 選擇部件和狀態(tài) 475
18.4.3 默認控件模板 476
18.4.4 使用FlipPanel控件 482
18.4.5 使用不同的控件模板 483
18.5 創(chuàng)建自定義面板 485
18.5.1 兩步布局過程 485
18.5.2 Canvas面板的副本 488
18.5.3 更好的WrapPanel面板 489
18.6 自定義繪圖元素 492
18.6.1 OnRender( )方法 493
18.6.2 評估自定義繪圖 494
18.6.3 自定義繪圖元素 495
18.6.4 創(chuàng)建自定義裝飾元素 497
18.7 小結(jié) 498
第Ⅴ部分 數(shù)據(jù)
第19章 數(shù)據(jù)綁定 501
19.1 使用自定義對象綁定到
數(shù)據(jù)庫 501
19.1.1 構(gòu)建數(shù)據(jù)訪問組件 502
19.1.2 構(gòu)建數(shù)據(jù)對象 504
19.1.3 顯示綁定對象 505
19.1.4 更新數(shù)據(jù)庫 508
19.1.5 更改通知 508
19.2 綁定到對象集合 510
19.2.1 顯示和編輯集合項 510
19.2.2 插入和移除集合項 513
19.2.3 綁定到ADO.NET對象 514
19.2.4 綁定到LINQ表達式 515
19.3 提高大列表的性能 518
19.3.1 虛擬化 518
19.3.2 項容器再循環(huán) 519
19.3.3 緩存長度 519
19.3.4 延遲滾動 520
19.4 驗證 521
19.4.1 在數(shù)據(jù)對象中進行驗證 521
19.4.2 自定義驗證規(guī)則 526
19.4.3 響應(yīng)驗證錯誤 528
19.4.4 獲取錯誤列表 529
19.4.5 顯示不同的錯誤指示符號 530
19.4.6 驗證多個值 533
19.5 數(shù)據(jù)提供者 535
19.5.1 ObjectDataProvider 536
19.5.2 XmlDataProvider 539
19.6 小結(jié) 541
第20章 格式化綁定的數(shù)據(jù) 543
20.1 數(shù)據(jù)綁定回顧 543
20.2 數(shù)據(jù)轉(zhuǎn)換 544
20.2.1 使用StringFormat屬性 545
20.2.2 值轉(zhuǎn)換器簡介 546
20.2.3 使用值轉(zhuǎn)換器設(shè)置字符串
的格式 547
20.2.4 使用值轉(zhuǎn)換器創(chuàng)建對象 549
20.2.5 應(yīng)用條件格式化 551
20.2.6 評估多個屬性 552
20.3 列表控件 554
20.4 列表樣式 555
20.4.1 ItemContainerStyle 556
20.4.2 包含復(fù)選框或單選按鈕的ListBox
控件 557
20.4.3 交替條目樣式 559
20.4.4 樣式選擇器 561
20.5 數(shù)據(jù)模板 564
20.5.1 分離和重用模板 566
20.5.2 使用更高級的模板 567
20.5.3 改變模板 569
20.5.4 模板選擇器 570
20.5.5 模板與選擇 573
20.5.6 改變項的布局 577
20.6 ComboBox控件 578
20.7 小結(jié) 581
第21章 數(shù)據(jù)視圖 583
21.1 View對象 583
21.1.1 檢索視圖對象 584
21.1.2 視圖導(dǎo)航 584
21.1.3 以聲明方式創(chuàng)建視圖 587
21.2 過濾、排序與分組 588
21.2.1 過濾集合 588
21.2.2 過濾DataTable對象 591
21.2.3 排序 592
21.2.4 分組 593
21.2.5 實時成型 598
21.3 小結(jié) 599
第22章 列表、樹和網(wǎng)格 601
22.1 ListView控件 601
22.1.1 使用GirdView創(chuàng)建列 602
22.1.2 創(chuàng)建自定義視圖 606
22.2 TreeView控件 613
22.2.1 創(chuàng)建數(shù)據(jù)綁定的TreeView
控件 614
22.2.2 將DataSet對象綁定到TreeView
控件 617
22.2.3 即時創(chuàng)建節(jié)點 618
22.3 DataGrid控件 621
22.3.1 改變列的尺寸與重新安排列 622
22.3.2 定義列 623
22.3.3 設(shè)置列的格式和樣式 628
22.3.4 設(shè)置行的格式 629
22.3.5 顯示行細節(jié) 630
22.3.6 凍結(jié)列 631
22.3.7 選擇 632
22.3.8 排序 632
22.3.9 編輯 633
22.4 小結(jié) 635
第Ⅵ 窗口、頁面和富控件
第23章 窗口 639
23.1 Window類 639
23.1.1 顯示窗口 641
23.1.2 定位窗口 642
23.1.3 保存和還原窗口位置 642
23.2 窗口交互 644
23.2.1 窗口所有權(quán) 646
23.2.2 對話框模型 647
23.2.3 通用對話框 648
23.3 非矩形窗口 649
23.3.1 簡單形狀窗口 649
23.3.2 具有形狀內(nèi)容的透明窗口 651
23.3.3 移動形狀窗口 653
23.3.4 改變形狀窗口的尺寸 653
23.3.5 組合到一起:窗口的自定義控件
模板 655
23.4 Windows 7任務(wù)欄編程 658
23.4.1 使用跳轉(zhuǎn)列表 659
23.4.2 改變?nèi)蝿?wù)欄圖標和預(yù)覽 663
23.5 小結(jié) 667
第24章 頁面和導(dǎo)航 669
24.1 基于頁面的導(dǎo)航 669
24.2 基于頁面的界面 670
24.2.1 創(chuàng)建一個具有導(dǎo)航窗口的基于
頁面的簡單應(yīng)用程序 670
24.2.2 Page類 672
24.2.3 超鏈接 673
24.2.4 在框架中駐留頁面 675
24.2.5 在另一個頁面中駐留頁面 677
24.2.6 在Web瀏覽器中駐留頁面 678
24.3 頁面歷史 678
24.3.1 深入分析WPF中的URI 678
24.3.2 導(dǎo)航歷史 679
24.3.3 維護自定義的屬性 681
24.4 導(dǎo)航服務(wù) 682
24.4.1 通過編程進行導(dǎo)航 682
24.4.2 導(dǎo)航事件 683
24.4.3 管理日志 684
24.4.4 向日志添加自定義項 685
24.4.5 使用頁函數(shù) 689
24.5 XAML瀏覽器應(yīng)用程序 692
24.5.1 創(chuàng)建XBAP應(yīng)用程序 692
24.5.2 部署XBAP應(yīng)用程序 693
24.5.3 更新XBAP應(yīng)用程序 695
24.5.4 XBAP應(yīng)用程序的安全性 695
24.5.5 完全信任的XBAP應(yīng)用程序 696
24.5.6 組合XBAP/獨立應(yīng)用程序 697
24.5.7 為不同的安全級別編寫代碼 697
24.5.8 在網(wǎng)頁中嵌入XBAP
應(yīng)用程序 702
24.6 WebBrowser控件 702
24.6.1 導(dǎo)航到頁面 703
24.6.2 構(gòu)建DOM樹 704
24.6.3 使用.NET代碼為網(wǎng)頁添加
腳本 706
24.7 小結(jié) 708
第25章 菜單、工具欄和功能區(qū) 709
25.1 菜單 709
25.1.1 Menu類 710
25.1.2 菜單項 710
25.1.3 ContextMenu類 712
25.1.4 菜單分隔條 713
25.2 工具欄和狀態(tài)欄 714
25.2.1 ToolBar控件 714
25.2.2 StatusBar控件 717
25.3 功能區(qū) 718
25.3.1 添加功能區(qū) 719
25.3.2 應(yīng)用程序菜單 720
25.3.3 選項卡、組與按鈕 722
25.3.4 富工具提示 724
25.3.5 帶有快捷鍵提示的鍵盤訪問 725
25.3.6 改變功能區(qū)的大小 726
25.3.7 快速訪問工具欄 729
25.4 小結(jié) 730
第26章 聲音和視頻 731
26.1 播放WAV音頻 731
26.1.1 SoundPlayer類 731
26.1.2 SoundPlayerAction類 733
26.1.3 系統(tǒng)聲音 733
26.2 MediaPlayer類 734
26.3 MediaElement類 735
26.3.1 使用代碼播放音頻 736
26.3.2 處理錯誤 737
26.3.3 使用觸發(fā)器播放音頻 737
26.3.4 播放多個聲音 739
26.3.5 改變音量、平衡、速度以及
位置 740
26.3.6 將動畫同步到音頻 742
26.3.7 播放視頻 744
26.3.8 視頻效果 744
26.4 語音 747
26.4.1 語音合成 747
26.4.2 語音識別 749
26.5 小結(jié) 751
第27章 3D繪圖 753
27.1 3D繪圖基礎(chǔ) 753
27.1.1 視口 754
27.1.2 3D對象 754
27.1.3 攝像機 761
27.2 深入研究3D繪圖 765
27.2.1 著色和法線 766
27.2.2 更復(fù)雜的形狀 769
27.2.3 Model3DGroup集合 769
27.2.4 使用材質(zhì) 771
27.2.5 紋理映射 773
27.3 交互和動畫 777
27.3.1 變換 777
27.3.2 旋轉(zhuǎn) 778
27.3.3 飛過 779
27.3.4 跟蹤球 781
27.3.5 命中測試 782
27.3.6 3D表面上的2D元素 786
27.4 小結(jié) 789
第Ⅶ部分 文檔和打印
第28章 文檔 793
28.1 理解文檔 793
28.2 流文檔 794
28.2.1 流內(nèi)容元素 795
28.2.2 設(shè)置內(nèi)容元素的格式 796
28.2.3 創(chuàng)建簡單的流文檔 797
28.2.4 塊元素 799
28.2.5 內(nèi)聯(lián)元素 804
28.2.6 通過代碼與元素進行交互 809
28.2.7 文本對齊 812
28.3 只讀流文檔容器 813
28.3.1 縮放 814
28.3.2 創(chuàng)建頁面和列 815
28.3.3 從文件加載文檔 817
28.3.4 打印 818
28.4 編輯流文檔 818
28.4.1 加載文件 819
28.4.2 保存文件 821
28.4.3 設(shè)置所選文本的格式 822
28.4.4 獲取單個單詞 824
28.5 固定文檔 825
28.6 批注 826
28.6.1 批注類 827
28.6.2 啟用批注服務(wù) 828
28.6.3 創(chuàng)建批注 829
28.6.4 檢查批注 832
28.6.5 響應(yīng)批注更改 835
28.6.6 在固定文檔中保存批注 835
28.6.7 自定義便簽的外觀 836
28.7 小結(jié) 837
第29章 打印 839
29.1 基本打印 839
29.1.1 打印元素 840
29.1.2 變換打印輸出 842
29.1.3 打印不顯示的元素 844
29.1.4 打印文檔 845
29.1.5 在文檔打印輸出中控制頁面 848
29.2 自定義打印 851
29.2.1 使用可視化層中的類
進行打印 851
29.2.2 自定義多頁打印 854
29.3 打印設(shè)置和管理 859
29.3.1 保存打印設(shè)置 859
29.3.2 打印頁面范圍 859
29.3.3 管理打印隊列 860
29.4 通過XPS進行打印 863
29.4.1 為打印預(yù)覽創(chuàng)建XPS文檔 863
29.4.2 寫入內(nèi)存的XPS文檔 864
29.4.3 通過XPS直接打印到
打印機 865
29.4.4 異步打印 866
29.5 小結(jié) 866
第Ⅷ部分 其他主題
第30章 與Windows窗體進行交互 869
30.1 訪問互操作性 869
30.2 混合窗口和窗體 870
30.2.1 為WPF應(yīng)用程序添加窗體 870
30.2.2 為Windows窗體應(yīng)用程序
添加WPF窗口 870
30.2.3 顯示模態(tài)窗口和窗體 871
30.2.4 顯示非模態(tài)窗口和窗體 871
30.2.5 啟用Windows窗體控件的
可視化風格 872
30.3 創(chuàng)建具有混合內(nèi)容的窗口 872
30.3.1 WPF和Windows窗體
“空域” 873
30.3.2 在WPF中駐留Windows
窗體控件 874
30.3.3 使用WPF和Windows窗體
用戶控件 876
30.3.4 在Windows窗體中駐留WPF
控件 877
30.3.5 訪問鍵、助記碼和焦點 879
30.3.6 屬性映射 880
30.4 小結(jié) 882
第31章 多線程 883
31.1 了解多線程模型 883
31.1.1 Dispatcher類 884
31.1.2 DispatcherObject類 884
31.2 BackgroundWorker類 887
31.2.1 簡單的異步操作 887
31.2.2 創(chuàng)建BackgroundWorker
對象 888
31.2.3 運行BackgroundWorker
對象 889
31.2.4 跟蹤進度 891
31.2.5 支持取消 893
31.3 小結(jié) 894
第32章 插件模型 895
32.1 在MAF和MEF兩者間
進行選擇 895
32.2 了解插件管道 896
32.2.1 管道的工作原理 897
32.2.2 插件文件夾結(jié)構(gòu) 898
32.2.3 為使用插件模型準備
解決方案 899
32.3 創(chuàng)建使用插件模型的
應(yīng)用程序 900
32.3.1 協(xié)定 901
32.3.2 插件視圖 901
32.3.3 插件 902
32.3.4 插件適配器 902
32.3.5 宿主視圖 903
32.3.6 宿主適配器 904
32.3.7 宿主 904
32.3.8 更多插件 907
32.4 與宿主進行交互 908
32.5 可視化插件 912
32.6 小結(jié) 915
第33章 ClickOnce部署 917
33.1 理解應(yīng)用程序部署 917
33.1.1 ClickOnce安裝模型 918
33.1.2 ClickOnce部署的局限性 919
33.2 簡單的ClickOnce發(fā)布 920
33.2.1 設(shè)置發(fā)布者和產(chǎn)品 920
33.2.2 啟動發(fā)布向?qū)?922
33.2.3 理解部署文件的結(jié)構(gòu) 926
33.2.4 安裝ClickOnce應(yīng)用程序 926
33.2.5 更新ClickOnce應(yīng)用程序 928
33.3 ClickOnce附加選項 928
33.3.1 發(fā)布版本 928
33.3.2 更新 929
33.3.3 文件關(guān)聯(lián) 930
33.3.4 發(fā)布選項 931
33.4 小結(jié) 932