C# 入門經典, 9/e Beginning C# and .NET
Benjamin Perkins,Jon D. Reid 齊立博 譯
買這商品的人也買了...
-
$500$390 -
$699$552 -
$1,280$1,088 -
$1,200$948 -
$780$663 -
$990$842 -
$479$455 -
$294$279 -
$680$537 -
$774$735 -
$760$745 -
$690$538 -
$980$774 -
$594$564 -
$400$316 -
$600$468 -
$356jQuery + Bootstrap Web 開發案例教程
-
$359$341 -
$1,200$948 -
$539$512 -
$650$429 -
$750$585 -
$450$351 -
$850$663 -
$640$627
相關主題
商品描述
主要特色 ?講解變量、表達式、控制流程、函數、調試和錯誤處理 ?涵蓋面向對象編程、類、類成員、ASP.NET Core、WCF、REST API和Blazor App編程技術 ?闡述代碼導航、IntelliSense、重構和代碼修復等增強功能如何幫助你更快捷、更輕松地編寫程序 ?提供大量可下載的示例代碼 ?如何在流程早期發現和修復bug,節省時間,減少麻煩 ?探索雲計算、跨平臺和數據訪問編程
目錄大綱
前 言
C#是Microsoft於2002年推出.NET Framework的第1版時提供的一種全新語言。C#從那時起迅速流行開來,成為使用.NET Framework的桌面、Web、雲和跨平臺開發人員無可爭議的選擇。開發人員喜歡C#的一個原因是其繼承自C/C++的簡潔明瞭的語法,這種語法簡化了以前給程序員帶來困擾的一些問題。盡管做了這些簡化,但C#仍保持了C++原有的功能,所以現在沒理由不從C++轉向C#。C#語言並不難,也非常適合開發人員學習基本編程技術。易於學習,再加上.NET Framework的功能,使C#成為開始你編程生涯的絕佳方式。
C#的最新版本C# 9是.NET 5.0和.NET Framework 4.8的一部分,它建立在已有的成功基礎之上,還添加了一些更吸引人的功能。Visual Studio的最新版本Visual Studio和開發工具的Visual Studio Code系列也有許多變化和改進,這大大簡化了編程工作,顯著提高了效率。
《C#入門經典(第9版)》將全面介紹C#編程的所有知識,從該語言本身一直到桌面編程、雲編程和跨平臺編程,再到數據源的使用,最後是一些新的高級技術。我們還將學習Visual Studio的功能和利用它開發應用程序的各種方式。
《C#入門經典(第9版)》文筆優美流暢,闡述清晰,每一章都以前面章節的內容為基礎,便於讀者掌握高級技術。每個概念都會根據需要介紹和討論,而不會突然冒出某個技術術語妨礙讀者的閱讀和理解。《C#入門經典(第9版)》盡量減少使用的技術術語數量,但如有必要,將根據上下文進行正確的定義和佈置。
《C#入門經典(第9版)》作者都是各自領域的專家,都是C#語言和.NET Framework的愛好者,沒人比他們更有資格講授C#了,他們將在你掌握從基本原理到高級技術的過程中為你保駕護航。除基礎知識外,《C#入門經典(第9版)》還有許多有益的提示、練習、完全成熟的示例代碼(可掃描封底二維碼下載),在你的職業生涯中一定會反復用到它們。
《C#入門經典(第9版)》將毫無保留地傳授這些知識,希望讀者能通過閱讀《C#入門經典(第9版)》成為最優秀的程序員。
0.1 《C#入門經典(第9版)》讀者對象
《C#入門經典(第9版)》面向想學習如何使用.NET編寫C#程序的所有人。《C#入門經典(第9版)》針對的是想要通過學習一種乾凈、現代、優雅的編程語言來掌握程序設計的完完全全的初學者。但是,對於熟悉其他編程語言、想要探索.NET平臺的讀者,以及想要瞭解旗艦語言.NET的開發人員,《C#入門經典(第9版)》同樣很有價值。
0.2 《C#入門經典(第9版)》內容
《C#入門經典(第9版)》前面的章節介紹C#語言本身,讀者不需要具備任何編程經驗。以前對其他語言有一定瞭解的開發人員,會覺得這些章節的內容非常熟悉。C#語法的許多方面都與其他語言相同,許多結構對所有的編程語言來說都是相通的(例如,循環和分支結構)。但是,即使是有經驗的程序員也可以通過這些章節理解此類技術應用於C#的特徵,從而從中獲益。
如果讀者是編程新手,就應從頭開始學習,瞭解基本的編程概念,並熟悉C#和支持C#的.NET平臺。如果讀者對.NET 比較陌生,但知道如何編程,就應閱讀第1章,然後快速跳讀後面幾章,這樣就能掌握C#語言的應用方式了。如果讀者知道如何編程,但以前從未接觸過面向對象的編程語言,就應從第8章開始閱讀。
如果讀者對C#語言比較瞭解,就可以集中精力學習那些詳細論述最新.NET和C#語言開發的章節,尤其是集合、泛型和C#語言新增內容的相關章節(第11章和第12章)。
《C#入門經典(第9版)》章節的編排方式可以達到兩個目的:可以按順序閱讀這些章節,將其視為C#語言的一個完整教程;還可以按照需要深入學習這些章節,將其作為一本參考資料。
除核心內容外,從第3章開始,大多數章節的末尾還包含一組習題,完成這些習題有助於讀者理解所學的內容。習題包括簡單的選擇題、判斷題以及需要修改或創建應用程序的較難問題。附錄中給出了全部習題的答案。這些習題也可以通過《C#入門經典(第9版)》的配套網站www.wrox.com下載,它們是wrox.com代碼下載的一部分。
隨著C#和.NET新版本的發布,對每一章都進行了徹底的檢查,刪掉了不太相關的內容,增加了新內容。所有代碼都在最新版本的開發工具上進行了測試,所有屏幕截圖都在Windows操作系統上重新截取,以提供最新的窗口和對話框。
《C#入門經典(第9版)》的亮點包括:
● 增加並改進了代碼示例。
● 增加了編寫跨平臺運行的ASP.NET Core應用程序的示例。
● 增加了編寫雲應用程序的示例,並使用Azure SDK創建和訪問雲資源。
0.3 《C#入門經典(第9版)》結構
《C#入門經典(第9版)》分為3大部分。
● C#語言:介紹C#語言的所有內容,從基礎知識到面向對象的技術,一應俱全。
● 數據訪問:介紹如何在應用程序中使用數據,包括存儲在硬盤文件中的數據、以XML格式存儲的數據和數據庫中的數據。
● 雲和跨平臺編程:講述使用C#和.NET的一些額外方式,包括雲和跨平臺開發、ASP .NET Web API、Windows Presentation Foundation (WPF)、Windows Communication Foundation (WCF)和Universal Windows Applications。
下麵介紹《C#入門經典(第9版)》3個重要部分中的章節。
0.3.1 C#語言(第1~13章)
第1章介紹C#及其與.NET的關系,瞭解在這個環境下編程的基礎知識,以及Visual Studio與它的關系。
第2章開始介紹如何編寫C#應用程序,學習C#的語法,並將C#和示例命令行、Windows應用程序結合起來使用。這些示例將說明如何快速輕松地啟動和運行C#,並附帶介紹Visual Studio開發環境以及《C#入門經典(第9版)》將要使用的基本窗口和工具。
接著將學習C#語言的基礎知識。第3章介紹變量的含義以及如何操縱它們。第4章將用流程控制(循環和分支)改進應用程序的結構,第5章介紹一些更高級的變量類型,如數組。第6章開始以函數形式封裝代碼,這樣就更易於執行重復操作,使代碼更容易讓人理解。
從第7章將運用C#語言的基礎知識,調試應用程序。這包括在運行應用程序時輸出跟蹤信息,使用Visual Studio查找錯誤,在強大的調試環境中找出解決問題的辦法。
第8章將學習面向對象編程(Object-Oriented Programming,OOP)。首先瞭解這個術語的含義,回答“什麽是對象?”OOP初看起來是較難的問題。我們將用一整章的篇幅來介紹它,解釋對象的強大之處。直到該章的最後才會真正使用C#代碼。
第9章將理論知識應用於實踐,當開始在C#應用程序中使用OOP時,這才體現出C#的真正威力。在第9章介紹如何定義類和接口之後,第10章將探討類成員(包括字段、屬性和方法),在該章的最後將開始創建一個撲克牌游戲,這個游戲將在後續章節中逐步開發完成,它非常有助於理解OOP。
學習了OOP在C#中的工作原理後,第11章將介紹幾種常見的OOP場景,包括處理對象集合、比較和轉換對象。第12章討論.NET 2.0中引入的一個非常有用的C#特性—— 泛型,利用它可以創建非常靈活的類。第13章通過其他一些技術(主要是事件,它在Windows編程中非常重要)繼續討論C#語言和OOP。最後介紹C#最新版本中引入的新特性。
0.3.2 數據訪問(第14~17章)
第14章介紹應用程序如何將數據保存到磁盤以及如何檢索磁盤上的數據(作為簡單的文本文件或者更復雜的數據表示方式)。該章還將討論如何壓縮數據,以及如何監視和處理文件系統的變化。
第15章介紹數據交換的事實標準XML,簡要論述JSON格式。該章將討論XML的基本規則,論述XML的所有功能。
該部分的其餘章節介紹LINQ(這是內置於.NET中的查詢語言)。第16要介紹LINQ。第17論如何使用LINQ訪問數據庫和其他數據。
0.3.3 其他技術(第18~21章)
第18章介紹.NET Standard和.NET Core,它們是面向任何應用程序類型(如WPF、Windows和ASP.NET)的工具,新興的應用程序可以在Linux或macOS等平臺上運行。該章討論.NET標準庫的安裝、創建和實現指令,還描述了ASP.NET和它的許多不同類型(例如,ASP.NET Webforms、ASP.NET MVC和ASP .NET Core)。
第19章首先描述什麽是雲編程,並討論了雲優化的堆棧。雲環境與傳統的程序編碼方式不同,因此討論了一些雲編程模式。要完成這一章,需要一個Azure trail賬戶,它是免費創建的,並附帶一些積分,這樣就可以創建和測試一個App Service Web應用程序。然後使用Azure SDK和C#,創建並訪問ASP .NET Web應用程序中的存儲賬戶。
第20章將學習如何創建ASP.NET Web API,並通過Blazor WebAssembly App使用它。然後,該章介紹了Windows Communication Foundation (WCF),它為在企業級以編程方式跨本地網絡和Internet訪問信息和功能提供了許多工具。該章將介紹如何以平臺無關的方式使用WCF,向Web應用程序和桌面應用程序公開復雜的數據和功能。
第21章首先介紹什麽是Windows編程,並看看如何在Visual Studio中實現。將WPF (Windows Presentation Foundation)作為一種工具,以圖形化方式構建桌面應用程序,並以最少的努力和時間組裝高級應用程序。你將從WPF編程的基礎知識開始,逐步積累到更高級的概念。
0.4 使用《C#入門經典(第9版)》的要求
《C#入門經典(第9版)》中C#和.NET Framework的代碼和描述都適用於C# 9和.NET Framework 4.8。除了.NET之外,不需要其他組件就可以理解《C#入門經典(第9版)》這方面的內容,但書中許多示例都需要使用開發工具。《C#入門經典(第9版)》將Visual Studio Community 2019作為主要開發工具。使用Visual Studio Community 2019來創建Windows應用程序、雲應用程序、跨平臺的應用程序,以及訪問數據庫的SQL Server Express應用程序。
可掃描封底二維碼下載全書代碼。
0.5 《C#入門經典(第9版)》約定
為了幫助讀者在閱讀《C#入門經典(第9版)》的過程中獲取最多信息,並隨時瞭解當前處理的事項,《C#入門經典(第9版)》使用了許多約定。
試一試
“試一試”是一個應該跟隨書中的文本完成的練習。
1. 這些練習通常包括一組步驟。
2. 每一步都有一個數字。
3. 按照這些步驟走到底。
示例說明
在每個“試一試”之後,會詳細解釋輸入的代碼。
警告:
包含重要且應該記住的信息,這些信息與周圍的文字直接關聯。
註意:
表示註釋、提示、暗示、技巧或對當前討論的弦外之音。
《C#入門經典(第9版)》通過兩種方式來顯示代碼:
● 對於大多數代碼示例,使用沒有突出顯示的等寬字體來表示。
● 對在當前上下文中特別重要的代碼,用粗體字強調顯示。
0.6 源代碼
在讀者學習《C#入門經典(第9版)》中的示例時,可以手工輸入所有的代碼,也可以使用《C#入門經典(第9版)》附帶的源代碼文件。《C#入門經典(第9版)》使用的所有源代碼都可通過掃描封底二維碼下載。
大部分代碼都以.ZIP、.RAR 或者適合平臺的類似歸檔格式進行了壓縮。下載代碼後,只需要用合適的解壓縮工具對它進行解壓縮即可。
目 錄
第I部分 C#語言
第1章 C#簡介 3
1.1 .NET的含義 3
1.1.1 .NET Framework、.NET Standard和
.NET Core 4
1.1.2 使用.NET編寫程序 4
1.2 C#的含義 7
1.2.1 用C#能編寫什麽樣的應用程序 8
1.2.2 本書中的C# 8
1.3 Visual Studio 8
1.3.1 Visual Studio產品 9
1.3.2 解決方案 9
1.4 本章要點 9
第2章 編寫C#程序 11
2.1 Visual Studio開發環境 12
2.2 控制台應用程序 15
2.2.1 Solution Explorer窗口 17
2.2.2 Properties窗口 18
2.2.3 Error List窗口 18
2.3 桌面應用程序 19
2.4 本章要點 22
第3章 變量和表達式 25
3.1 C#的基本語法 25
3.2 C#控制台應用程序的基本結構 28
3.3 變量 29
3.3.1 簡單類型 29
3.3.2 變量的命名 32
3.3.3 字面值 33
3.4 表達式 35
3.4.1 數學運算符 36
3.4.2 賦值運算符 39
3.4.3 運算符的優先級 40
3.4.4 名稱空間 40
3.5 習題 42
3.6 本章要點 42
第4章 流程控制 43
4.1 布爾邏輯 43
4.1.1 布爾按位運算符和賦值運算符 45
4.1.2 運算符優先級的更新 46
4.2 分支 47
4.2.1 三元運算符 47
4.2.2 if語句 47
4.2.3 switch語句 51
4.3 循環 53
4.3.1 do循環 53
4.3.2 while循環 56
4.3.3 for循環 57
4.3.4 循環的中斷 58
4.3.5 無限循環 59
4.4 習題 59
4.5 本章要點 60
第5章 變量的更多內容 61
5.1 類型轉換 61
5.1.1 隱式轉換 62
5.1.2 顯式轉換 63
5.1.3 使用Convert命令進行顯式轉換 65
5.2 復雜的變量類型 67
5.2.1 枚舉 67
5.2.2 結構 71
5.2.3 數組 73
5.3 字符串的處理 83
5.4 習題 87
5.5 本章要點 87
第6章 函數 89
6.1 定義和使用函數 90
6.1.1 返回值 91
6.1.2 參數 93
6.2 變量的作用域 100
6.2.1 其他結構中變量的作用域 103
6.2.2 參數和返回值與全局數據 104
6.2.3 局部函數 106
6.3 Main()函數 106
6.4 結構函數 108
6.5 函數的重載 109
6.6 委托 111
6.7 習題 113
6.8 本章要點 114
第7章 調試和錯誤處理 115
7.1 Visual Studio中的調試 115
7.1.1 非中斷(正常)模式下的調試 116
7.1.2 中斷模式下的調試 123
7.2 錯誤處理 129
7.2.1 try...catch...finally 129
7.2.2 throw表達式 135
7.2.3 列出和配置異常 135
7.3 習題 136
7.4 本章要點 136
第8章 面向對象編程簡介 137
8.1 面向對象編程的含義 137
8.1.1 對象的含義 138
8.1.2 一切皆對象 140
8.1.3 對象的生命周期 141
8.1.4 靜態成員和實例類成員 141
8.2 OOP技術 142
8.2.1 接口 143
8.2.2 繼承 144
8.2.3 多態性 146
8.2.4 對象之間的關系 147
8.2.5 運算符重載 148
8.2.6 事件 149
8.2.7 引用類型和值類型 149
8.3 桌面應用程序中的OOP 150
8.4 習題 153
8.5 本章要點 153
第9章 定義類 155
9.1 C#中的類定義 155
9.2 System.Object 160
9.3 構造函數和析構函數 161
9.4 Visual Studio中的OOP工具 165
9.4.1 Class View窗口 165
9.4.2 對象瀏覽器 166
9.4.3 添加類 168
9.4.4 類圖 169
9.5 類庫項目 170
9.6 接口和抽象類 173
9.7 結構類型 175
9.8 淺度和深度復制 176
9.9 習題 177
9.10 本章要點 177
第10章 定義類成員 179
10.1 成員定義 179
10.1.1 定義字段 180
10.1.2 定義方法 180
10.1.3 定義屬性 181
10.1.4 元組析構 186
10.1.5 重構成員 186
10.1.6 自動屬性 187
10.2 類成員的其他主題 188
10.2.1 隱藏基類方法 188
10.2.2 調用重寫或隱藏的基類方法 189
10.2.3 使用嵌套的類型定義 190
10.3 接口的實現 192
10.4 部分類定義 194
10.5 部分方法定義 195
10.6 示例應用程序 197
10.6.1 規劃應用程序 197
10.6.2 編寫類庫 197
10.6.3 類庫的客戶應用程序 203
10.7 Call Hierarchy窗口 204
10.8 習題 205
10.9 本章要點 205
第11章 集合、比較和轉換 207
11.1 集合 207
11.1.1 使用集合 208
11.1.2 定義集合 213
11.1.3 索引符 214
11.1.4 給CardLib添加Cards集合 216
11.1.5 鍵控集合和IDictionary 218
11.1.6 迭代器 219
11.1.7 迭代器和集合 223
11.1.8 深度復制 223
11.1.9 給CardLib添加深度復制 225
11.2 比較 226
11.2.1 類型比較 226
11.2.2 使用is運算符模式表達式
進行模式匹配 230
11.2.3 值比較 231
11.3 轉換 244
11.3.1 重載轉換運算符 244
11.3.2 as運算符 245
11.4 習題 246
11.5 本章要點 247
第12章 泛型 249
12.1 泛型的含義 249
12.2 使用泛型 250
12.2.1 可空類型 251
12.2.2 System.Collections.Generic
名稱空間 257
12.3 定義泛型類型 266
12.3.1 定義泛型類 266
12.3.2 定義泛型接口 275
12.3.3 定義泛型方法 275
12.3.4 定義泛型委托 277
12.4 變體 277
12.4.1 協變 278
12.4.2 抗變 278
12.5 習題 279
12.6 本章要點 280
第13章 高級C#技術 281
13.1 ::運算符和全局名稱空間
限定符 282
13.2 定製異常 283
13.3 事件 284
13.3.1 事件的含義 284
13.3.2 處理事件 286
13.3.3 定義事件 288
13.4 擴展和使用CardLib 295
13.5 特性 302
13.5.1 讀取特性 302
13.5.2 創建特性 303
13.6 初始化器 304
13.6.1 對象初始化器 304
13.6.2 集合初始化器 306
13.7 類型推理 309
13.8 匿名類型 310
13.9 動態查找 314
13.10 高級方法參數 317
13.10.1 可選參數 318
13.10.2 命名參數 319
13.11 Lambda表達式 323
13.11.1 復習匿名方法 323
13.11.2 把Lambda表達式用於
匿名方法 324
13.11.3 Lambda表達式的參數 327
13.11.4 Lambda表達式的語句體 327
13.11.5 Lambda表達式用作委托和
表達式樹 328
13.11.6 Lambda表達式和集合 329
13.12 習題 331
13.13 本章要點 332
第II部分 數據訪問
第14章 文件 337
14.1 用於輸入和輸出的類 337
14.1.1 File類和Directory類 338
14.1.2 FileInfo類 339
14.1.3 DirectoryInfo類 340
14.1.4 路徑名和相對路徑 341
14.2 流 341
14.2.1 使用流的類 341
14.2.2 FileStream對象 342
14.2.3 StreamWriter對象 347
14.2.4 StreamReader對象 349
14.2.5 異步文件訪問 351
14.2.6 讀寫壓縮文件 352
14.3 監控文件系統 355
14.4 習題 359
14.5 本章要點 359
第15章 XML和JSON 361
15.1 XML基礎 361
15.2 JSON 基礎 362
15.3 XML模式 363
15.4 XML文檔對象模型 365
15.4.1 XmlDocument類 365
15.4.2 XmlElement類 366
15.4.3 修改節點的值 369
15.5 用XPath搜索XML 374
15.6 習題 380
15.7 本章要點 381
第16章 LINQ 383
16.1 LINQ to XML 384
16.1.1 LINQ to XML函數構造方式 384
16.1.2 處理XML片段 387
16.2 LINQ提供程序 389
16.3 LINQ查詢語法 389
16.3.1 用var關鍵字聲明結果變量 390
16.3.2 指定數據源:from子句 391
16.3.3 指定條件:where子句 391
16.3.4 選擇元素:select子句 391
16.3.5 完成:使用foreach循環 392
16.3.6 延遲執行的查詢 392
16.4 LINQ方法語法 392
16.4.1 LINQ擴展方法 392
16.4.2 查詢語法和方法語法 392
16.4.3 Lambda 表達式 393
16.5 排序查詢結果 395
16.6 orderby子句 396
16.7 查詢大型數據集 396
16.8 使用聚合運算符 399
16.9 單值選擇查詢 401
16.10 多級排序 404
16.11 分組查詢 405
16.12 join查詢 407
16.13 習題 408
16.14 本章要點 409
第17章 數據庫 411
17.1 使用數據庫 411
17.2 Entity Framework 412
17.3 代碼優先與數據庫優先 412
17.4 遷移和搭框架 412
17.5 安裝SQL Server Express
LocalDB 412
17.6 代碼優先數據庫 413
17.7 數據庫的位置 423
17.8 導航數據庫關系 424
17.9 在已有的數據庫中創建和
查詢XML 430
17.10 習題 433
17.11 本章要點 434
第III部分 雲和跨平臺編程
第18章 .NET與ASP.NET 437
18.1 跨平臺基礎知識以及必知的
關鍵術語 438
18.2 .NET Standard的含義 440
18.2.1 共享項目、PCL和
.NET Standard 441
18.2.2 構建和打包.NET Standard庫 443
18.3 引用和目標.NET 446
18.4 .NET Core的含義 447
18.4.1 跨平臺 447
18.4.2 開源 448
18.4.3 針對雲進行優化 448
18.4.4 性能 448
18.4.5 模塊化設計 449
18.4.6 獨立的部署模型 450
18.5 從.NET Framework移植
到.NET 452
18.5.1 識別第三方依賴 453
18.5.2 理解哪些功能不可用 454
18.5.3 升級當前的.NET Framework
目標 454
18.6 Web應用程序概述 454
18.7 選擇合適的ASP.NET 455
18.7.1 ASP.NET Web Forms 456
18.7.2 ASP.NET MVC/ASP.NET
Core Web App MVC 461
18.7.3 ASP.NET Web API 463
18.7.4 ASP.NET Core Web App 463
18.8 本章要點 469
第19章 基本的雲編程 471
19.1 雲、雲計算和雲優化堆棧 472
19.2 雲模式和最佳實踐 474
19.3 使用Microsoft Azure C#庫
創建存儲容器 475
19.4 創建使用存儲容器的ASP.NET
Core Web應用程序 483
19.5 習題 488
19.6 本章要點 489
第20章 基本Web API和WCF編程 491
20.1 創建ASP.NET Core Web API 491
20.2 使用ASP.NET Core Web API 495
20.3 REST的含義 501
20.4 WCF的含義 501
20.5 WCF概念 502
20.5.1 WCF通信協議 502
20.5.2 地址、端點和綁定 503
20.5.3 協定 504
20.5.4 消息模式 505
20.5.5 行為 505
20.5.6 駐留 505
20.6 WCF編程 505
20.6.1 WCF測試客戶端程序 511
20.6.2 定義WCF服務協定 513
20.6.3 自駐留的WCF服務 519
20.7 習題 525
20.8 本章要點 526
第21章 基本桌面編程 527
21.1 XAML 528
21.1.1 關註點分離 528
21.1.2 XAML基礎知識 529
21.2 動手實踐 530
21.2.1 WPF控件 531
21.2.2 屬性 532
21.2.3 事件 535
21.3 控件佈局 540
21.3.1 基本佈局概念 540
21.3.2 佈局面板 541
21.4 游戲客戶端 549
21.4.1 About窗口 549
21.4.2 Options窗口 553
21.4.3 數據綁定 562
21.4.4 使用ListBox控件啟動游戲 566
21.5 創建控件並設置樣式 569
21.5.1 樣式 570
21.5.2 模板 570
21.5.3 觸發器 572
21.5.4 動畫 573
21.6 WPF用戶控件 574
21.7 主窗口 586
21.7.1 菜單控件 586
21.7.2 路由命令和菜單 586
21.8 把所有內容結合起來 590
21.8.1 重構域模型 590
21.8.2 視圖模型 597
21.8.3 大功告成 604
21.9 習題 611
21.10 本章要點 612
附錄A 習題答案(可從配套網站下載)