WPF編程寶典——使用C# 2012和.NET 4.5(第4版)(.NET開(kāi)發(fā)經(jīng)典名著)國(guó)內(nèi)首本基于C# 2012和.NET 4.5 WPF權(quán)威著作,前幾版深受讀者好評(píng)
定 價(jià):128 元
叢書(shū)名:NET開(kāi)發(fā)經(jīng)典名著
- 作者:(美)麥克唐納 著,王德才 譯
- 出版時(shí)間:2013/8/1
- ISBN:9787302327738
- 出 版 社:清華大學(xué)出版社
- 中圖法分類(lèi):TP312
- 頁(yè)碼:932
- 紙張:膠版紙
- 版次:4
- 開(kāi)本:大16開(kāi)
書(shū)全面講解WPF的實(shí)際工作原理,是一本W(wǎng)PF權(quán)威著作。在緊貼實(shí)用示例這一思想的引導(dǎo)下,列出實(shí)用提示,引導(dǎo)以專(zhuān)業(yè)的方式使用WPF。本書(shū)開(kāi)篇介紹WPF基本概念以便為您奠定堅(jiān)實(shí)的基礎(chǔ),并將現(xiàn)有C#技能作為引用框架,然后討論高級(jí)概念,結(jié)合實(shí)際演示它們的用法,并重點(diǎn)強(qiáng)調(diào)了可由此節(jié)省的時(shí)間和人力成本。
本書(shū)特色
u 理解WPF編程的基礎(chǔ)知識(shí):從XAML到控件,乃至數(shù)據(jù)流
u 開(kāi)發(fā)實(shí)用的應(yīng)用程序,帶您實(shí)際了解導(dǎo)航、本地化和開(kāi)發(fā)
u 探討WPF提供的高級(jí)用戶(hù)界面控件
u 分析如何在WPF中管理文檔,涵蓋了文本布局、打印和文檔打包等所有技術(shù)
u 使用圖形和多媒體來(lái)增強(qiáng)應(yīng)用程序
l WPF權(quán)威著作,內(nèi)容更新至C#2012和.NET4.5,前幾版深受讀者好評(píng)l 零起點(diǎn)闡釋W(xué)PF核心概念和工作機(jī)制,幫助讀者從入門(mén)到精通l 精彩的示例和詳細(xì)的講解,本書(shū)后而不重,讀起來(lái)易學(xué)易懂
.NET問(wèn)世之初便引入了一些重要的新技術(shù),包括編寫(xiě)Web應(yīng)用程序的全新方法(ASP.NET)、連接數(shù)據(jù)庫(kù)的全新方法(ADO.NET)、新的類(lèi)型安全的語(yǔ)言(C#和VB.NET)以及托管的運(yùn)行時(shí)(CLR)。在這些新技術(shù)中,其中一項(xiàng)重要技術(shù)是Windows窗體,它是用于構(gòu)建Windows應(yīng)用程序的類(lèi)庫(kù)。
盡管Windows窗體是一個(gè)功能完備的工具包,但它綁定到舊式的核心Windows技術(shù)。最重要的是,Windows窗體依靠Windows API創(chuàng)建標(biāo)準(zhǔn)用戶(hù)界面元素的可視化外觀,如按鈕、文本框和復(fù)選框等。所以這些要素在本質(zhì)上是不可定制的。例如,如果希望創(chuàng)建時(shí)髦的光暈按鈕,就需要?jiǎng)?chuàng)建自定義控件,并使用低級(jí)的繪圖模型為按鈕(各種不同的狀態(tài))繪制各個(gè)方面的細(xì)節(jié)。更糟的是,普通窗口被切割成不同的區(qū)域,每個(gè)控件完全擁有自己的區(qū)域。所以沒(méi)有較好的繪制方法可將一個(gè)控件的內(nèi)容(如按鈕背后的輝光效果)延伸到其他控件所占的區(qū)域中。更不要指望實(shí)現(xiàn)動(dòng)畫(huà)效果,如旋轉(zhuǎn)文本、閃爍按鈕、收縮窗口以及實(shí)時(shí)預(yù)覽等,因?yàn)閷?duì)于這些效果必須手工繪制每個(gè)細(xì)節(jié)。
WPF(Windows Presentation Foundation)通過(guò)引入一個(gè)使用完全不同技術(shù)的新模型改變了所有這一切。盡管WPF也提供了大家熟悉的標(biāo)準(zhǔn)控件,但它“自行”繪制每個(gè)文本、邊框和背景填充。所以WPF的功能更強(qiáng)大,可以改變渲染屏幕上所有內(nèi)容的方式。使用這些特性,可重新設(shè)置常見(jiàn)控件的樣式(如按鈕),并且通常不需要編寫(xiě)任何代碼。同樣,可使用變換對(duì)象旋轉(zhuǎn)、拉伸、縮放以及扭曲用戶(hù)界面中的所有內(nèi)容,甚至可使用WPF動(dòng)畫(huà)系統(tǒng)對(duì)用戶(hù)界面中的內(nèi)容進(jìn)行變換。并且因?yàn)閃PF引擎將在窗口上渲染的內(nèi)容作為單獨(dú)操作的一部分,所以能處理任意多層相互重疊的控件,即使這些控件具有不規(guī)則的形狀且是半透明的也同樣如此。
在WPF這些新特性的背后是基于DirectX的功能強(qiáng)大的基礎(chǔ)結(jié)構(gòu),DirectX是一套硬件加速的圖形API,通常用于開(kāi)發(fā)最前沿的計(jì)算機(jī)游戲。這意味著可使用豐富的圖形效果,而不會(huì)損失性能,而使用Windows窗體實(shí)現(xiàn)此類(lèi)效果會(huì)嚴(yán)重影響程序運(yùn)行的性能。實(shí)際上,甚至可使用更高級(jí)特性,例如對(duì)視頻文件和3D內(nèi)容的支持。使用這些特性以及優(yōu)秀的設(shè)計(jì)工具,可創(chuàng)建出令人賞心悅目的用戶(hù)界面和可視化效果,而使用Windows窗體技術(shù)是無(wú)法實(shí)現(xiàn)這些效果的。
還有必要指出,可使用WPF的標(biāo)準(zhǔn)控件和簡(jiǎn)單的可視化外觀來(lái)構(gòu)建普通Windows應(yīng)用程序。實(shí)際上,在WPF中,可以像在舊式Windows窗體模型中那樣方便地使用通用控件。更值得一提的是,WPF增強(qiáng)了商業(yè)開(kāi)發(fā)人員所需要的特性,包括大幅改進(jìn)的數(shù)據(jù)綁定模型、一套用于打印以及管理打印隊(duì)列的新類(lèi),以及用于顯示大量格式化文本的文檔特性。甚至提供了用于構(gòu)建基于頁(yè)面的應(yīng)用程序的模型,這種應(yīng)用程序可在Internet Explorer中流暢運(yùn)行,并能從Web站點(diǎn)啟動(dòng),所有這些操作都不會(huì)出現(xiàn)常見(jiàn)的安全警告和令人討厭的安裝提示?傊,WPF將以前Windows開(kāi)發(fā)領(lǐng)域中的精華與當(dāng)今的創(chuàng)新技術(shù)融為一體,得以構(gòu)建現(xiàn)代化的富圖形用戶(hù)界面。
關(guān)于本書(shū)
本書(shū)深刻地介紹WPF技術(shù),面向了解.NET平臺(tái)、C#語(yǔ)言以及Visual Studio開(kāi)發(fā)環(huán)境的專(zhuān)業(yè)開(kāi)發(fā)人員。在學(xué)習(xí)本書(shū)前,不需要具備使用以前版本W(wǎng)PF的經(jīng)驗(yàn),而使用過(guò)WPF的開(kāi)發(fā)人員可以通過(guò)閱讀每章開(kāi)頭的“新增功能”來(lái)了解WPF新特性。
本書(shū)全面描述WPF的所有主要特性,從XAML(用于定義WPF用戶(hù)界面的標(biāo)記語(yǔ)言)到3D繪圖和動(dòng)畫(huà)。本書(shū)個(gè)別之處會(huì)編寫(xiě)涉及.NET Framework其他特性的代碼,如用于查詢(xún)數(shù)據(jù)庫(kù)的ADO.NET類(lèi)。本書(shū)中不討論這些內(nèi)容。但如果需要了解有關(guān).NET(而非特定于WPF)的特性的更多信息,請(qǐng)參閱Apress出版的許多專(zhuān)門(mén)介紹.NET的書(shū)籍。
內(nèi)容概覽
本書(shū)共包括33章。如果剛開(kāi)始學(xué)習(xí)WPF,將發(fā)現(xiàn)按照章節(jié)順序閱讀本書(shū)是最容易的方法,因?yàn)楹罄m(xù)章節(jié)常用到前面章節(jié)中演示的技術(shù)。
下面是本書(shū)每一章的主要內(nèi)容:
第1章:WPF概述 介紹WPF的體系結(jié)構(gòu),WPF的DirectX基礎(chǔ)設(shè)施,以及新的能自動(dòng)改變用戶(hù)界面尺寸的設(shè)備無(wú)關(guān)度量系統(tǒng)。
第2章:XAML 介紹用于定義用戶(hù)界面的XAML標(biāo)準(zhǔn)。該章將討論為什么創(chuàng)建XAML以及XAML的工作原理,并將用不同的編碼方法創(chuàng)建基本的WPF窗口。
第3章:布局 深入研究在WPF窗口中用于組織元素的布局面板。該章將分析不同布局策略,并將構(gòu)建一些普通類(lèi)型的窗口。
第4章:依賴(lài)項(xiàng)屬性 介紹WPF如何使用依賴(lài)項(xiàng)屬性來(lái)支持重要特性,如數(shù)據(jù)綁定和動(dòng)畫(huà)。
第5章:路由事件 介紹WPF如何使用事件路由在用戶(hù)界面元素中發(fā)送冒泡路由事件或隧道路由事件,還介紹所有WPF元素都支持的一組基本鼠標(biāo)、鍵盤(pán)以及多點(diǎn)觸控事件。
第6章:控件 分析所有Windows開(kāi)發(fā)人員都十分熟悉的控件,如按鈕、文本框和標(biāo)簽,還討論它們?cè)赪PF中的區(qū)別。
第7章:Application類(lèi) 介紹WPF應(yīng)用程序模型。在該章中您將看到如何創(chuàng)建單實(shí)例和基于文檔的WPF應(yīng)用程序。
第8章:元素綁定 介紹WPF數(shù)據(jù)綁定。在該章中您將看到如何將任意類(lèi)型的對(duì)象綁定到用戶(hù)界面。
第9章:命令 介紹WPF命令模型,使用WPF命令模型可將多個(gè)控件連接到同一個(gè)邏輯操作。
第10章:資源 介紹如何使用資源在程序集中嵌入二進(jìn)制文件,以及如何在整個(gè)用戶(hù)界面中重用重要的對(duì)象。
第11章:樣式和行為 解釋W(xué)PF樣式系統(tǒng),使用WPF樣式可為一整組控件應(yīng)用一套通用屬性值。
第12章:形狀、畫(huà)刷和變換 介紹WPF中的2D繪圖模型。在該章中您將學(xué)習(xí)如何創(chuàng)建形狀、使用變換改變?cè),以及使用漸變畫(huà)刷、圖像畫(huà)刷和平鋪圖像畫(huà)刷繪制特殊效果。
第13章:幾何形狀和圖畫(huà) 深入分析2D繪圖。在該章中您將學(xué)習(xí)如何創(chuàng)建包含弧線(xiàn)和曲線(xiàn)的復(fù)雜路徑,以及如何高效地使用復(fù)雜圖形。
第14章:效果和可視化對(duì)象 介紹低級(jí)圖形編程。在該章中您將使用像素著色器應(yīng)用Photoshop風(fēng)格的效果,手動(dòng)構(gòu)建位圖,并為了優(yōu)化繪圖性能而使用WPF的可視化層。
第15章:動(dòng)畫(huà)基礎(chǔ) 研究WPF的動(dòng)畫(huà)框架,通過(guò)WPF動(dòng)畫(huà)框架可使用簡(jiǎn)單的聲明式標(biāo)記將動(dòng)態(tài)效果集成到應(yīng)用程序中。
第16章:高級(jí)動(dòng)畫(huà) 研究更高級(jí)的動(dòng)畫(huà)技術(shù),如關(guān)鍵幀動(dòng)畫(huà)、基于路徑的動(dòng)畫(huà)以及基于幀的動(dòng)畫(huà)。該章還將列舉一個(gè)詳細(xì)示例,展示如何使用代碼創(chuàng)建和管理動(dòng)態(tài)的動(dòng)畫(huà)。
第17章:控件模板 介紹如何通過(guò)插入定制的模板來(lái)為任意WPF控件提供動(dòng)態(tài)的新外觀(以及新行為),您還將看到如何使用模板構(gòu)建能夠換膚的應(yīng)用程序。
第18章:自定義元素 研究如何擴(kuò)展現(xiàn)有的WPF控件,以及如何創(chuàng)建自己的控件。在該章中您將看到幾個(gè)示例,包括基于模板的顏色拾取器、可翻轉(zhuǎn)的面板、自定義的布局容器,以及執(zhí)行自定義繪圖的裝飾元素。
第19章:數(shù)據(jù)綁定 展示如何從數(shù)據(jù)庫(kù)獲取信息,將獲取的信息插入到自定義的數(shù)據(jù)對(duì)象中,并將這些數(shù)據(jù)對(duì)象綁定到WPF控件。您還將學(xué)習(xí)如何借助虛擬化技術(shù)提高大型數(shù)據(jù)綁定列表的性能,以及如何使用驗(yàn)證方法捕獲編輯錯(cuò)誤。
第20章:格式化綁定的數(shù)據(jù) 展示將原始數(shù)據(jù)轉(zhuǎn)換為包含圖片、控件以及選擇效果的富數(shù)據(jù)顯示的一些技巧。
第21章:數(shù)據(jù)視圖 分析如何在數(shù)據(jù)綁定窗口中使用視圖在數(shù)據(jù)項(xiàng)列表中導(dǎo)航,以及應(yīng)用過(guò)濾、分類(lèi)和分組。
第22章:列表、樹(shù)和網(wǎng)格 帶您瀏覽WPF中的富數(shù)據(jù)控件,包括ListView、TreeView和DataGrid。
第23章:窗口 分析WPF中窗口的工作原理。在該章中您還將學(xué)習(xí)如何創(chuàng)建不規(guī)則形狀的窗口,以及如何使用Vista玻璃效果,您還將通過(guò)定制任務(wù)欄跳轉(zhuǎn)列表、縮略圖以及圖標(biāo)重疊實(shí)現(xiàn)大部分Windows 7特性。
第24章:頁(yè)面和導(dǎo)航 介紹如何使用WPF構(gòu)建頁(yè)面,以及保持跟蹤導(dǎo)航歷史。該章還將介紹如何構(gòu)建駐留于瀏覽器中的WPF應(yīng)用程序,這種應(yīng)用程序可從Web站點(diǎn)啟動(dòng)。
第25章:菜單、工具欄和功能區(qū) 分析面向命令的控件,如菜單和工具欄。在該章還將使用可免費(fèi)下載的Ribbon控件嘗試更富有現(xiàn)代氣息的用戶(hù)界面。
第26章:聲音和視頻 介紹WPF媒體支持。在該章中您將看到如何控制聲音和視頻的播放,以及如何合成動(dòng)畫(huà)和生動(dòng)鮮活的效果。
第27章:3D繪圖 研究WPF中對(duì)繪制3D圖形的支持。在該章將學(xué)習(xí)如何創(chuàng)建和變換3D對(duì)象,以及如何為3D對(duì)象應(yīng)用動(dòng)畫(huà)效果,甚至還會(huì)看到如何在3D表面上放置可交互的2D控件。
第28章:文檔 介紹WPF的富文檔支持。在該章中您將學(xué)習(xí)如何使用流文檔以盡可能便于閱讀的方式呈現(xiàn)大量文本,并將學(xué)習(xí)如何用固定文檔顯示準(zhǔn)備打印的頁(yè)面,甚至還將學(xué)習(xí)如何使用RichTextBox控件提供文檔編輯功能。
第29章:打印 演示W(wǎng)PF的打印模型,可通過(guò)打印模型在打印文檔中繪制文本和圖形。在該章中您還將學(xué)習(xí)如何管理頁(yè)面設(shè)置和打印隊(duì)列。
第30章:與Windows窗體進(jìn)行交互 分析如何在同一個(gè)應(yīng)用程序—— 甚至在同一個(gè)窗口中,結(jié)合使用WPF和Windows窗體內(nèi)容。
第31章:多線(xiàn)程 介紹如何創(chuàng)建具有良好響應(yīng)能力,在后臺(tái)執(zhí)行耗時(shí)任務(wù)的WPF應(yīng)用程序。
第32章:插件模型 展示如何創(chuàng)建可擴(kuò)展的、能動(dòng)態(tài)發(fā)現(xiàn)和加載獨(dú)立組件的應(yīng)用程序。
第33章:ClickOnce部署 展示如何使用ClickOnce安裝模型部署WPF應(yīng)用程序。
使用本書(shū)的前提條件
為運(yùn)行WPF 4.5應(yīng)用程序,計(jì)算機(jī)必須安裝Windows 7、Windows 8或帶有Service Pack 2的 Windows Vista,還需要.NET Framework 4.5。為創(chuàng)建WPF 4.5應(yīng)用程序(并打開(kāi)本書(shū)中提供的示例項(xiàng)目),需要安裝Visual Studio 2012,Visual Studio 2012中包含了.NET Framework 4.5。
還有一種選擇。不使用任何版本的Visual Studio,可使用Expression Blend(一種面向圖形的設(shè)計(jì)工具)來(lái)構(gòu)建和測(cè)試WPF應(yīng)用程序?傮w而言,Expression Blend是面向圖形設(shè)計(jì)人員的工具,他們使用該工具創(chuàng)建絢麗奪目的內(nèi)容;而對(duì)于編寫(xiě)大量代碼的編程人員來(lái)說(shuō),Visual Studio則是理想工具。本書(shū)假定使用的是Visual Studio。如果準(zhǔn)備使用Expression Blend,務(wù)必選用明確支持WPF的版本(與某些Visual Studio版本綁定在一起的版本僅用于Metro開(kāi)發(fā),不支持WPF)。到撰寫(xiě)本書(shū)時(shí)為止,支持WPF的Expression Blend版本是稱(chēng)為Blend + Sketchflow Preview for Visual Studio 2012的預(yù)覽版本,網(wǎng)址是http://tinyurl.com/cgar5lz。
代碼示例和URL
查看Apress網(wǎng)站或www.prosetech.com以下載最新的示例代碼是個(gè)好主意。測(cè)試在本書(shū)中介紹的大部分更復(fù)雜的示例需要用到這些代碼示例,因?yàn)樵诒緯?shū)示例中那些較次要的細(xì)節(jié)通常被忽略了。本書(shū)關(guān)注最重要的部分,以免為闡明概念而無(wú)謂地占用過(guò)多篇幅。
為下載本書(shū)的源代碼,可訪(fǎng)問(wèn)Web站點(diǎn) http://www.prosetech.com查找本書(shū)的頁(yè)面,也可從http://www.tupwk.com.cn/downpage下載本書(shū)的源代碼。您將發(fā)現(xiàn)在本書(shū)中提及的鏈接的列表,從而不需要鍵入任何內(nèi)容就可以找到重要工具和例子。
反饋
本書(shū)力爭(zhēng)成為WPF編程愛(ài)好者的最佳輔導(dǎo)和參考資料。為達(dá)到該目標(biāo),您的評(píng)論和建議對(duì)我們來(lái)說(shuō)是非常有幫助的。您可將本書(shū)的缺點(diǎn)、優(yōu)點(diǎn)及其他反饋信息直接發(fā)送到郵箱wkservice@vip.163.com,我們將不勝感激。
atthewMacDonald是一位作家、教育家,曾三次榮膺微軟MVP。他迄今已經(jīng)撰寫(xiě)了十多本有關(guān).NET編程的書(shū)籍,包括ProSilverlight 5 in C#(由Apress于2012年出版)和Beginning ASP.NET4.5 in C#(由Apress于2012年出版) 。他還曾撰寫(xiě)Your Brain: TheMissing Manual(由O’Reilly Media于2008年出版)一書(shū),該書(shū)講述如何最大限度地激發(fā)大腦潛能,出版后受到廣大讀者的熱烈歡迎。Matthew目前與妻子和兩個(gè)女兒居住在多倫多。
第Ⅰ部分 基礎(chǔ)知識(shí)
第1章 WPF概述 3
1.1 Windows圖形演化 3
1.1.1 DirectX:新的圖形引擎 4
1.1.2 硬件加速與WPF 4
1.2 WPF:高級(jí)API 4
1.3 分辨率無(wú)關(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ǔ)知識(shí)
第1章 WPF概述 3
1.1 Windows圖形演化 3
1.1.1 DirectX:新的圖形引擎 4
1.1.2 硬件加速與WPF 4
1.2 WPF:高級(jí)API 4
1.3 分辨率無(wú)關(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之前的圖形用戶(hù)界面 17
2.1.2 XAML變體 19
2.1.3 XAML編譯 19
2.2 XAML基礎(chǔ) 20
2.2.1 XAML名稱(chēng)空間 21
2.2.2 代碼隱藏類(lèi) 22
2.3 XAML中的屬性和事件 24
2.3.1 簡(jiǎn)單屬性與類(lèi)型轉(zhuǎn)換器 25
2.3.2 復(fù)雜屬性 26
2.3.3 標(biāo)記擴(kuò)展 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 使用其他名稱(chēng)空間中的類(lèi)型 36
2.5 加載和編譯XAML 38
2.5.1 只使用代碼 38
2.5.2 使用代碼和未經(jīng)編譯的XAML 40
2.5.3 使用代碼和編譯過(guò)的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 布局過(guò)程 48
3.1.3 布局容器 48
3.2 使用StackPanel面板進(jìn)行簡(jiǎn)單
布局 50
3.2.1 布局屬性 52
3.2.2 對(duì)齊方式 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面板進(jìn)行基于
坐標(biāo)的布局 72
3.5.1 Z順序 73
3.5.2 lnkCanvas元素 74
3.6 布局示例 76
3.6.1 列設(shè)置 76
3.6.2 動(dòng)態(tài)內(nèi)容 77
3.6.3 組合式用戶(hù)界面 79
3.7 小結(jié) 80
第4章 依賴(lài)項(xiàng)屬性 83
4.1 理解依賴(lài)項(xiàng)屬性 83
4.1.1 定義依賴(lài)項(xiàng)屬性 84
4.1.2 注冊(cè)依賴(lài)項(xiàng)屬性 84
4.1.3 添加屬性包裝器 86
4.1.4 WPF使用依賴(lài)項(xiàng)屬性的方式 87
4.1.5 共享的依賴(lài)項(xiàng)屬性 88
4.1.6 附加的依賴(lài)項(xiàng)屬性 88
4.2 屬性驗(yàn)證 90
4.2.1 驗(yàn)證回調(diào) 90
4.2.2 強(qiáng)制回調(diào) 91
4.3 小結(jié) 93
第5章 路由事件 95
5.1 理解路由事件 95
5.1.1 定義、注冊(cè)和封裝路由事件 95
5.1.2 共享路由事件 96
5.1.3 引發(fā)路由事件 96
5.1.4 處理路由事件 97
5.2 事件路由 99
5.2.1 RoutedEventArgs類(lèi) 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 鍵盤(pán)輸入 108
5.4.1 處理按鍵事件 109
5.4.2 焦點(diǎn) 111
5.4.3 獲取鍵盤(pán)狀態(tài) 112
5.5 鼠標(biāo)輸入 113
5.5.1 鼠標(biāo)單擊 115
5.5.2 捕獲鼠標(biāo) 115
5.5.3 鼠標(biāo)拖放 116
5.6 多點(diǎn)觸控輸入 118
5.6.1 多點(diǎn)觸控的輸入層次 119
5.6.2 原始觸控 119
5.6.3 操作 122
5.6.4 慣性 124
5.7 小結(jié) 125
第Ⅱ部分 進(jìn)一步研究WPF
第6章 控件 129
6.1 控件類(lèi) 129
6.1.1 背景畫(huà)刷和前景畫(huà)刷 130
6.1.2 字體 132
6.1.3 鼠標(biāo)光標(biāo) 136
6.2 內(nèi)容控件 137
6.2.1 Content屬性 138
6.2.2 對(duì)齊內(nèi)容 140
6.2.3 WPF內(nèi)容原則 141
6.2.4 標(biāo)簽 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 拼寫(xiě)檢查 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類(lèi) 173
7.1 應(yīng)用程序的生命周期 173
7.1.1 創(chuàng)建Application對(duì)象 173
7.1.2 派生自定義的Application類(lèi) 174
7.1.3 應(yīng)用程序的關(guān)閉方式 176
7.1.4 應(yīng)用程序事件 177
7.2 Application類(lèi)的任務(wù) 179
7.2.1 顯示初始界面 179
7.2.2 處理命令行參數(shù) 180
7.2.3 訪(fǎng)問(wèn)當(dāng)前Application對(duì)象 181
7.2.4 在窗口之間進(jìn)行交互 182
7.2.5 單實(shí)例應(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)建能夠本地化的用戶(hù)界面 194
7.4.2 使應(yīng)用程序?yàn)楸镜鼗龊脺?zhǔn)備 194
7.4.3 管理翻譯過(guò)程 195
7.5 小結(jié) 200
第8章 元素綁定 201
8.1 將元素綁定到一起 201
8.1.1 綁定表達(dá)式 202
8.1.2 綁定錯(cuò)誤 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 綁定到非元素對(duì)象 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類(lèi) 217
9.2.3 RoutedUICommand類(lèi) 218
9.2.4 命令庫(kù) 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 高級(jí)命令 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)資源和動(dòng)態(tài)資源 242
10.1.4 非共享資源 243
10.1.5 通過(guò)代碼訪(fǎng)問(wèn)資源 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)建樣式對(duì)象 256
11.1.2 設(shè)置屬性 257
11.1.3 關(guān)聯(lián)事件處理程序 258
11.1.4 多層樣式 259
11.1.5 通過(guò)類(lèi)型自動(dòng)應(yīng)用樣式 261
11.2 觸發(fā)器 262
11.2.1 簡(jiǎn)單觸發(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è)計(jì)時(shí)行為支持 271
11.4 小結(jié) 271
第Ⅲ部分 圖畫(huà)和動(dòng)畫(huà)
第12章 形狀、畫(huà)刷和變換 275
12.1 理解形狀 275
12.1.1 Shape類(lèi) 276
12.1.2 矩形和橢圓 277
12.1.3 改變形狀的尺寸和放置形狀 278
12.1.4 使用Viewbox控件縮放形狀 280
12.1.5 直線(xiàn) 282
12.1.6 折線(xiàn) 283
12.1.7 多邊形 284
12.1.8 直線(xiàn)線(xiàn)帽和直線(xiàn)交點(diǎn) 286
12.1.9 點(diǎn)劃線(xiàn) 287
12.1.10 像素對(duì)齊 288
12.2 畫(huà)刷 289
12.2.1 SolidColorBrush畫(huà)刷 290
12.2.2 LinearGradientBrush畫(huà)刷 290
12.2.3 RadialGradientBrush畫(huà)刷 292
12.2.4 ImageBrush畫(huà)刷 294
12.2.5 平鋪的ImageBrush畫(huà)刷 295
12.2.6 VisualBrush畫(huà)刷 297
12.2.7 BitmapCacheBrush畫(huà)刷 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章 幾何圖形和圖畫(huà) 307
13.1 路徑和幾何圖形 307
13.1.1 直線(xiàn)、矩形和橢圓圖形 308
13.1.2 使用GeometryGroup
組合形狀 309
13.1.3 使用CombinedGeometry融合
幾何圖形 311
13.1.4 使用PathGeometry繪制曲線(xiàn)和
直線(xiàn) 313
13.1.5 微語(yǔ)言幾何圖形 318
13.1.6 使用幾何圖形進(jìn)行剪裁 319
13.2 圖畫(huà) 320
13.2.1 顯示圖畫(huà) 322
13.2.2 導(dǎo)出插圖 324
13.3 小結(jié) 326
第14章 效果和可視化對(duì)象 327
14.1 可視化對(duì)象 327
14.1.1 繪制可視化對(duì)象 328
14.1.2 在元素中封裝可視化對(duì)象 329
14.1.3 命中測(cè)試 332
14.1.4 復(fù)雜的命中測(cè)試 334
14.2 效果 338
14.2.1 BlurEffect類(lèi) 338
14.2.2 DropShadowEffect類(lèi) 339
14.2.3 ShaderEffect類(lèi) 340
14.3 WriteableBitmap類(lèi) 342
14.3.1 生成位圖 342
14.3.2 寫(xiě)入WriteableBitmap對(duì)象 343
14.3.3 更高效的像素寫(xiě)入 345
14.4 小結(jié) 347
第15章 動(dòng)畫(huà)基礎(chǔ) 349
15.1 理解WPF動(dòng)畫(huà) 349
15.1.1 基于時(shí)間的動(dòng)畫(huà) 349
15.1.2 基于屬性的動(dòng)畫(huà) 350
15.2 基本動(dòng)畫(huà) 351
15.2.1 Animation類(lèi) 351
15.2.2 使用代碼創(chuàng)建動(dòng)畫(huà) 353
15.2.3 同時(shí)發(fā)生的動(dòng)畫(huà) 358
15.2.4 動(dòng)畫(huà)的生命周期 358
15.2.5 Timeline類(lèi) 359
15.3 故事板 362
15.3.1 故事板 363
15.3.2 事件觸發(fā)器 363
15.3.3 重疊動(dòng)畫(huà) 366
15.3.4 同步的動(dòng)畫(huà) 367
15.3.5 控制播放 367
15.3.6 監(jiān)視動(dòng)畫(huà)進(jìn)度 371
15.4 動(dòng)畫(huà)緩動(dòng) 373
15.4.1 使用緩動(dòng)函數(shù) 373
15.4.2 在動(dòng)畫(huà)開(kāi)始時(shí)應(yīng)用緩動(dòng)與在動(dòng)畫(huà)
結(jié)束時(shí)應(yīng)用緩動(dòng) 374
15.4.3 緩動(dòng)函數(shù)類(lèi) 375
15.4.4 創(chuàng)建自定義緩動(dòng)函數(shù) 377
15.5 動(dòng)畫(huà)性能 379
15.5.1 期望的幀率 380
15.5.2 位圖緩存 382
15.6 小結(jié) 384
第16章 高級(jí)動(dòng)畫(huà) 385
16.1 動(dòng)畫(huà)類(lèi)型回顧 385
16.1.1 動(dòng)態(tài)變換 386
16.1.2 動(dòng)態(tài)改變畫(huà)刷 390
16.1.3 動(dòng)態(tài)改變像素著色器 392
16.2 關(guān)鍵幀動(dòng)畫(huà) 393
16.2.1 離散的關(guān)鍵幀動(dòng)畫(huà) 395
16.2.2 緩動(dòng)關(guān)鍵幀 395
16.2.3 樣條關(guān)鍵幀動(dòng)畫(huà) 396
16.3 基于路徑的動(dòng)畫(huà) 397
16.4 基于幀的動(dòng)畫(huà) 399
16.5 使用代碼創(chuàng)建故事板 402
16.5.1 創(chuàng)建主窗口 403
16.5.2 創(chuàng)建Bomb用戶(hù)控件 405
16.5.3 投彈 406
16.5.4 攔截炸彈 409
16.5.5 統(tǒng)計(jì)炸彈和清理工作 410
16.6 小結(jié) 412
第Ⅳ部分 模板和自定義元素
第17章 控件模板 417
17.1 理解邏輯樹(shù)和可視化樹(shù) 417
17.2 理解模板 422
17.2.1 修飾類(lèi) 424
17.2.2 剖析控件 426
17.3 創(chuàng)建控件模板 428
17.3.1 簡(jiǎn)單按鈕 429
17.3.2 模板綁定 430
17.3.3 改變屬性的觸發(fā)器 431
17.3.4 使用動(dòng)畫(huà)的觸發(fā)器 434
17.4 組織模板資源 435
17.4.1 分解按鈕控件模板 436
17.4.2 通過(guò)樣式應(yīng)用模板 438
17.4.3 自動(dòng)應(yīng)用模板 439
17.4.4 由用戶(hù)選擇的皮膚 440
17.5 構(gòu)建更復(fù)雜的模板 442
17.5.1 嵌套的模板 443
17.5.2 修改滾動(dòng)條 445
17.5.3 控件模板示例 450
17.6 可視化狀態(tài) 451
17.7 小結(jié) 452
第18章 自定義元素 453
18.1 理解WPF中的自定義元素 454
18.2 構(gòu)建基本的用戶(hù)控件 456
18.2.1 定義依賴(lài)項(xiàng)屬性 456
18.2.2 定義路由事件 459
18.2.3 添加標(biāo)記 460
18.2.4 使用控件 462
18.2.5 命令支持 462
18.2.6 深入分析用戶(hù)控件 465
18.3 創(chuàng)建無(wú)外觀控件 466
18.3.1 修改顏色拾取器的代碼 466
18.3.2 修改顏色拾取器的標(biāo)記 467
18.3.3 精簡(jiǎn)控件模板 469
18.4 支持可視化狀態(tài) 472
18.4.1 開(kāi)始編寫(xiě)FlipPanel類(lèi) 473
18.4.2 選擇部件和狀態(tài) 475
18.4.3 默認(rèn)控件模板 476
18.4.4 使用FlipPanel控件 482
18.4.5 使用不同的控件模板 483
18.5 創(chuàng)建自定義面板 485
18.5.1 兩步布局過(guò)程 485
18.5.2 Canvas面板的副本 488
18.5.3 更好的WrapPanel面板 489
18.6 自定義繪圖元素 492
18.6.1 OnRender( )方法 493
18.6.2 評(píng)估自定義繪圖 494
18.6.3 自定義繪圖元素 495
18.6.4 創(chuàng)建自定義裝飾元素 497
18.7 小結(jié) 498
第Ⅴ部分 數(shù)據(jù)
第19章 數(shù)據(jù)綁定 501
19.1 使用自定義對(duì)象綁定到
數(shù)據(jù)庫(kù) 501
19.1.1 構(gòu)建數(shù)據(jù)訪(fǎng)問(wèn)組件 502
19.1.2 構(gòu)建數(shù)據(jù)對(duì)象 504
19.1.3 顯示綁定對(duì)象 505
19.1.4 更新數(shù)據(jù)庫(kù) 508
19.1.5 更改通知 508
19.2 綁定到對(duì)象集合 510
19.2.1 顯示和編輯集合項(xiàng) 510
19.2.2 插入和移除集合項(xiàng) 513
19.2.3 綁定到ADO.NET對(duì)象 514
19.2.4 綁定到LINQ表達(dá)式 515
19.3 提高大列表的性能 518
19.3.1 虛擬化 518
19.3.2 項(xiàng)容器再循環(huán) 519
19.3.3 緩存長(zhǎng)度 519
19.3.4 延遲滾動(dòng) 520
19.4 驗(yàn)證 521
19.4.1 在數(shù)據(jù)對(duì)象中進(jìn)行驗(yàn)證 521
19.4.2 自定義驗(yàn)證規(guī)則 526
19.4.3 響應(yīng)驗(yàn)證錯(cuò)誤 528
19.4.4 獲取錯(cuò)誤列表 529
19.4.5 顯示不同的錯(cuò)誤指示符號(hào) 530
19.4.6 驗(yàn)證多個(gè)值 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)換器簡(jiǎn)介 546
20.2.3 使用值轉(zhuǎn)換器設(shè)置字符串
的格式 547
20.2.4 使用值轉(zhuǎn)換器創(chuàng)建對(duì)象 549
20.2.5 應(yīng)用條件格式化 551
20.2.6 評(píng)估多個(gè)屬性 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 使用更高級(jí)的模板 567
20.5.3 改變模板 569
20.5.4 模板選擇器 570
20.5.5 模板與選擇 573
20.5.6 改變項(xiàng)的布局 577
20.6 ComboBox控件 578
20.7 小結(jié) 581
第21章 數(shù)據(jù)視圖 583
21.1 View對(duì)象 583
21.1.1 檢索視圖對(duì)象 584
21.1.2 視圖導(dǎo)航 584
21.1.3 以聲明方式創(chuàng)建視圖 587
21.2 過(guò)濾、排序與分組 588
21.2.1 過(guò)濾集合 588
21.2.2 過(guò)濾DataTable對(duì)象 591
21.2.3 排序 592
21.2.4 分組 593
21.2.5 實(shí)時(shí)成型 598
21.3 小結(jié) 599
第22章 列表、樹(shù)和網(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對(duì)象綁定到TreeView
控件 617
22.2.3 即時(shí)創(chuàng)建節(jié)點(diǎn) 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 顯示行細(xì)節(jié) 630
22.3.6 凍結(jié)列 631
22.3.7 選擇 632
22.3.8 排序 632
22.3.9 編輯 633
22.4 小結(jié) 635
第Ⅵ 窗口、頁(yè)面和富控件
第23章 窗口 639
23.1 Window類(lèi) 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 對(duì)話(huà)框模型 647
23.2.3 通用對(duì)話(huà)框 648
23.3 非矩形窗口 649
23.3.1 簡(jiǎn)單形狀窗口 649
23.3.2 具有形狀內(nèi)容的透明窗口 651
23.3.3 移動(dòng)形狀窗口 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ù)欄圖標(biāo)和預(yù)覽 663
23.5 小結(jié) 667
第24章 頁(yè)面和導(dǎo)航 669
24.1 基于頁(yè)面的導(dǎo)航 669
24.2 基于頁(yè)面的界面 670
24.2.1 創(chuàng)建一個(gè)具有導(dǎo)航窗口的基于
頁(yè)面的簡(jiǎn)單應(yīng)用程序 670
24.2.2 Page類(lèi) 672
24.2.3 超鏈接 673
24.2.4 在框架中駐留頁(yè)面 675
24.2.5 在另一個(gè)頁(yè)面中駐留頁(yè)面 677
24.2.6 在Web瀏覽器中駐留頁(yè)面 678
24.3 頁(yè)面歷史 678
24.3.1 深入分析WPF中的URI 678
24.3.2 導(dǎo)航歷史 679
24.3.3 維護(hù)自定義的屬性 681
24.4 導(dǎo)航服務(wù) 682
24.4.1 通過(guò)編程進(jìn)行導(dǎo)航 682
24.4.2 導(dǎo)航事件 683
24.4.3 管理日志 684
24.4.4 向日志添加自定義項(xiàng) 685
24.4.5 使用頁(yè)函數(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/獨(dú)立應(yīng)用程序 697
24.5.7 為不同的安全級(jí)別編寫(xiě)代碼 697
24.5.8 在網(wǎng)頁(yè)中嵌入XBAP
應(yīng)用程序 702
24.6 WebBrowser控件 702
24.6.1 導(dǎo)航到頁(yè)面 703
24.6.2 構(gòu)建DOM樹(shù) 704
24.6.3 使用.NET代碼為網(wǎng)頁(yè)添加
腳本 706
24.7 小結(jié) 708
第25章 菜單、工具欄和功能區(qū) 709
25.1 菜單 709
25.1.1 Menu類(lèi) 710
25.1.2 菜單項(xiàng) 710
25.1.3 ContextMenu類(lèi) 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 選項(xiàng)卡、組與按鈕 722
25.3.4 富工具提示 724
25.3.5 帶有快捷鍵提示的鍵盤(pán)訪(fǎng)問(wèn) 725
25.3.6 改變功能區(qū)的大小 726
25.3.7 快速訪(fǎng)問(wèn)工具欄 729
25.4 小結(jié) 730
第26章 聲音和視頻 731
26.1 播放WAV音頻 731
26.1.1 SoundPlayer類(lèi) 731
26.1.2 SoundPlayerAction類(lèi) 733
26.1.3 系統(tǒng)聲音 733
26.2 MediaPlayer類(lèi) 734
26.3 MediaElement類(lèi) 735
26.3.1 使用代碼播放音頻 736
26.3.2 處理錯(cuò)誤 737
26.3.3 使用觸發(fā)器播放音頻 737
26.3.4 播放多個(gè)聲音 739
26.3.5 改變音量、平衡、速度以及
位置 740
26.3.6 將動(dòng)畫(huà)同步到音頻 742
26.3.7 播放視頻 744
26.3.8 視頻效果 744
26.4 語(yǔ)音 747
26.4.1 語(yǔ)音合成 747
26.4.2 語(yǔ)音識(shí)別 749
26.5 小結(jié) 751
第27章 3D繪圖 753
27.1 3D繪圖基礎(chǔ) 753
27.1.1 視口 754
27.1.2 3D對(duì)象 754
27.1.3 攝像機(jī) 761
27.2 深入研究3D繪圖 765
27.2.1 著色和法線(xiàn) 766
27.2.2 更復(fù)雜的形狀 769
27.2.3 Model3DGroup集合 769
27.2.4 使用材質(zhì) 771
27.2.5 紋理映射 773
27.3 交互和動(dòng)畫(huà) 777
27.3.1 變換 777
27.3.2 旋轉(zhuǎn) 778
27.3.3 飛過(guò) 779
27.3.4 跟蹤球 781
27.3.5 命中測(cè)試 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)建簡(jiǎn)單的流文檔 797
28.2.4 塊元素 799
28.2.5 內(nèi)聯(lián)元素 804
28.2.6 通過(guò)代碼與元素進(jìn)行交互 809
28.2.7 文本對(duì)齊 812
28.3 只讀流文檔容器 813
28.3.1 縮放 814
28.3.2 創(chuàng)建頁(yè)面和列 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 獲取單個(gè)單詞 824
28.5 固定文檔 825
28.6 批注 826
28.6.1 批注類(lèi) 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 在文檔打印輸出中控制頁(yè)面 848
29.2 自定義打印 851
29.2.1 使用可視化層中的類(lèi)
進(jìn)行打印 851
29.2.2 自定義多頁(yè)打印 854
29.3 打印設(shè)置和管理 859
29.3.1 保存打印設(shè)置 859
29.3.2 打印頁(yè)面范圍 859
29.3.3 管理打印隊(duì)列 860
29.4 通過(guò)XPS進(jìn)行打印 863
29.4.1 為打印預(yù)覽創(chuàng)建XPS文檔 863
29.4.2 寫(xiě)入內(nèi)存的XPS文檔 864
29.4.3 通過(guò)XPS直接打印到
打印機(jī) 865
29.4.4 異步打印 866
29.5 小結(jié) 866
第Ⅷ部分 其他主題
第30章 與Windows窗體進(jìn)行交互 869
30.1 訪(fǎng)問(wèn)互操作性 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窗體控件的
可視化風(fēng)格 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窗體
用戶(hù)控件 876
30.3.4 在Windows窗體中駐留WPF
控件 877
30.3.5 訪(fǎng)問(wèn)鍵、助記碼和焦點(diǎn) 879
30.3.6 屬性映射 880
30.4 小結(jié) 882
第31章 多線(xiàn)程 883
31.1 了解多線(xiàn)程模型 883
31.1.1 Dispatcher類(lèi) 884
31.1.2 DispatcherObject類(lèi) 884
31.2 BackgroundWorker類(lèi) 887
31.2.1 簡(jiǎn)單的異步操作 887
31.2.2 創(chuàng)建BackgroundWorker
對(duì)象 888
31.2.3 運(yùn)行BackgroundWorker
對(duì)象 889
31.2.4 跟蹤進(jìn)度 891
31.2.5 支持取消 893
31.3 小結(jié) 894
第32章 插件模型 895
32.1 在MAF和MEF兩者間
進(jìn)行選擇 895
32.2 了解插件管道 896
32.2.1 管道的工作原理 897
32.2.2 插件文件夾結(jié)構(gòu) 898
32.2.3 為使用插件模型準(zhǔn)備
解決方案 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 與宿主進(jìn)行交互 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 簡(jiǎn)單的ClickOnce發(fā)布 920
33.2.1 設(shè)置發(fā)布者和產(chǎn)品 920
33.2.2 啟動(dòng)發(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附加選項(xiàng) 928
33.3.1 發(fā)布版本 928
33.3.2 更新 929
33.3.3 文件關(guān)聯(lián) 930
33.3.4 發(fā)布選項(xiàng) 931
33.4 小結(jié) 932