C# 入門經典, 9/e Beginning C# and .NET

Benjamin Perkins,Jon D. Reid 齊立博 譯

  • 出版商: 清華大學
  • 出版日期: 2022-04-01
  • 定價: $708
  • 售價: 8.5$602
  • 語言: 簡體中文
  • ISBN: 7302603030
  • ISBN-13: 9787302603030
  • 相關分類: C#
  • 立即出貨

  • C# 入門經典, 9/e-preview-1
  • C# 入門經典, 9/e-preview-2
  • C# 入門經典, 9/e-preview-3
C# 入門經典, 9/e-preview-1

買這商品的人也買了...

商品描述

主要特色 ?講解變量、表達式、控制流程、函數、調試和錯誤處理 ?涵蓋面向對象編程、類、類成員、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  習題答案(可從配套網站下載)