在本書的最終印刷版中出現了不少問題,對此我感到十分遺憾,在此向各位讀者表示深深的歉意!
以下是勘誤表的本文:
2.6 P17
譯文:擺脫花括弧(一段)
若不這樣做,你也可以使用屬性元素文法而不用任何擺脫,……
修訂:
妙用花括弧
……若不打算這麼做,你也可以使用屬性元素文法,而無需任何技巧,……
2.7.2 P19
譯文:XAML允許將項添加到支援索引的兩種類型的集合中:List和Dictionary
修訂:XAML能把項添加到兩種支援索引的集合中,它們是List和Dictionary。
P20
譯文:例如,下面的XAML添加了兩個Color對象到一個ResourceDictionary中。
修訂:例如,下面的XAML在ResourceDictionary中添加了兩個Color對象。
2.9.2 P30
譯文(最後一句):XML的效能缺陷通常只會影響開發時,而此時又是最需要XML的好處的
修訂:XML的效能缺陷通常只會影響開發過程中的效能,而此時又是最需要使用XML的時候。
3.1 P31
譯文:這是由於它具有層次化的特性
修訂:這是因為它有層次化特性
譯文:在WPF中,使用者介面由一個對象樹構建而成
修訂:在WPF中,使用者介面由一棵對象樹構建而成
譯文:通過學習每一個概念時
修訂:在學習每一個概念時
譯文:Window擁有一個StackPanel子項目
修訂:這個Window擁有一個StackPanel子項目
3.2 P35
譯文:當使用depth=0和當前的Window執行個體調用這些方法時,其結果就是一個基於文本的樹
修訂:當depth=0且當前的Window執行個體調用這些方法時,其結果就是用文本“畫”出一棵樹。
譯文:雖然在Window的建構函式中就可以遍曆邏輯樹狀結構,但可視樹直到Window完成至少一次布局之後才會有節點,否則是空的。
修訂:雖然在Window的建構函式中就可以遍曆邏輯樹狀結構,但直到Window完成至少一次布局之後可視樹才會有節點,否則就是空的。
3.2 P36
原文:You might first meet this concept with skepticism, as it complicates the picture of .NET types having simple fields, properties, methods, and events.
譯文:你可能在懷疑論中第一次遇到這個概念,它使得.NET類型變得很複雜
修訂:你可能在第一次碰到這個概念時產生過懷疑,因為它可能使原本簡單的.NET類型(其中包括欄位、屬性、方法和事件)變得很複雜。
譯文:或者一個父元素的屬性值從上慢慢傳遞給子項目等
修訂:或者一個父元素的屬性值從上而下慢慢傳遞給子項目等
3.3.2 P48
譯文:Source和OriginalSource的存在允許使用更進階別的邏輯樹狀結構和更低層級的可視樹。
修訂:由於Source和OriginalSource的存在,你可以使用更高層的邏輯樹狀結構和更低層的可視樹。
譯文:(就像由鍵盤支援的Click)
修訂:(比如由鍵盤觸發的Click事件)
3.3.3 P49
譯文:可以標記它為“已處理”
修訂:你可以把它標記為“已處理”
譯文:指示筆是一種類似於筆的平板電腦(TabletPC)使用的裝置
修訂:指示筆是一種類似於筆的裝置,供平板電腦(TabletPC)使用
3.4.1 P57
譯文:Button的Content也可以在XAML中設定,可以設定它為選中的命令的Text屬性
修訂:Button的Content也可以在XAML中設定,你可以設定它為某個命令的Text屬性。
3.4.2 P57
譯文:就像按Help Button一樣!
修訂:就像按Help按鈕一樣!
第3章小結 P60
譯文:會看到這並沒有曾經的技術那麼簡單
修訂:會看到這並沒有以前的技術那麼簡單
3.4.3 P58
譯文:粘貼Button會自動被啟用
修訂:Paste按鈕會自動被啟用
3.5 P59
譯文:Freezable類——出於效能原因,可以被“凍結”為一個唯讀狀態物件的基類。
修訂:Freezable類——被凍結的對象的基類,這些對象是唯讀,使用這些對象主要是出於效能方面的考慮。
P60
譯文:Controls也支援一些模板……
修訂:Control類還支援一些模板……
3.6 P60
譯文:在這一章和前面的兩章中,已經學習了在.NET Framework之上構建WPF的主要方式
修訂:在本章和前兩章中,你已經學習了在.NET Framework的基礎上構建WPF應用的主要方式。
譯文:而是增加了一些基礎概念來提供許多特性,
修訂:而是增加了一些基礎概念,它們能夠提供許多功能,
譯文:確實,當你聚焦這些核心概念時,
修訂:確實,當你專註於這些核心概念時,
4.1.2 P66
譯文:作為一種WPF的內容控制項,它可以用Content屬性儲存區任何內容——Button、Menu等,但是Label只對文本有用。
修訂: 作為WPF的內容控制項之一,它能用Content屬性儲存區任何內容,如Button、Menu等,但Label通常僅用於文本。
P67
譯文:(提示)甚至不需要使用ToolTip常見問題集類
修訂:甚至不需要使用ToolTip類
4.1.2.3 P69
譯文:例如,當屬性在Frame中時,它們將不從元素樹繼承。從很多方面看,WPF的Frame行為很像HTML的Frame。
修訂:例如,從元素樹繼承下來的屬性在到達Frame時將停止繼承。WPF的Frame的行為在很多方面很像HTML中的Frame。
譯文:談到HTML,Frame的要求是它除了渲染WPF內容以外還要可以渲染HTML內容!
修訂:談到HTML,Frame的要求是它除了能渲染WPF內容以外還能渲染HTML內容!
譯文:不幸的是,當Frame宿主了HTML之後,它有一些局限,……
修訂:可惜,當Frame裝載了HTML之後,他會有一些局限性,……
譯文:例如,HTML內容總是在WPF內容頂部被渲染……
修訂:例如,HTML內容總是在WPF內容的上方渲染……
4.2 P72
譯文:WPF會渲染每一個項的DayOfWeek屬性值
修訂:WPF會渲染每一項(item)的DayOfWeek屬性的值。
譯文:這就是圖4-10中3個DateTime對象被渲染為Monday、Tuesday和Wednesday的原因
修訂:這就是圖4-10中3個DateTime對象顯示成Monday、Tuesday和Wednesday的原因
4.2 P78
譯文:為什麼我為在ComboBoxItem中封裝(wrap)Item操心?
修訂:為什麼我盡量把Item封裝(wrap)在ComboBoxItem中?
譯文:整個控制項在選擇框裡得到顯示。作為替代,它的內部內容會被截取並顯示出來。
修訂:選擇框中不會顯示整個控制項,而是把內部內容截斷後顯示出來。
4.2 P81
譯文:也儲存了一些控制列header的行為的其它屬性。
修訂:也儲存了一些控制列頭(column header)的行為其他屬性。
4.2.2 P82
譯文:把Menu添加到它的ItemsControl基類的唯一公開的API是IsMainMenu屬性。
修訂:Menu唯一添加到ItemsControl基類的公開API是IsMainMenu屬性。
譯文:當為true(預設值)時,使用者按下Alt……
修訂:當IsMainMenu為true(預設值)時,使用者按下Alt……
P83
譯文:MenuItem使用底線首碼來支援訪問鍵(access key)
修訂:MenuItem使用底線首碼來支援快速鍵(access key)
P86
譯文:TreeView的API使它看起來很像一個Selector
修訂:看過TreeView的API,你會發現它很像一個Selector
4.3.1 P90
譯文:因為它使使用者能夠通過在刻度尺移動手指游標來改變當前的值。
修訂:因為它使使用者能夠通過移動刻度尺上的手指游標來改變當前的值。
4.4.3 P92
譯文:一個普通的System.String的非加密內容會被存在記憶體回收站中並儲存一段時間,
修訂:一個普通的System.String的非加密內容會被存放在用於記憶體回收的堆(heap)上,並儲存一段時間。
4.4.4 P93
譯文:InkCanvas支援幾種模式
修訂:InkCanvas支援多種模式
6.5.2 P120
譯文:另一個迷人的Grid特性是,它對互動改變行列尺寸的支援
修訂:Grid另一個迷人的特性是,它支援以互動方式改變行列尺寸
譯文:也可以添加多個GridSplitter到Grid中
修訂:你也可以添加多個GridSplitter到Grid中
譯文:預設情況下,哪個儲存格受到尺寸改變的影響取決於GridSplitter的對齊值。表6-5總結了這一行為,並用藍色表示出了在不同的設定下GridSplitter的樣子
修訂:預設情況下,哪個儲存格的尺寸會改變取決於GridSplitter的對齊值。表6-5總結了這一行為,並用藍色標出了不同設定的GridSplitter的樣子。
P121
譯文:當所有的行或列採用比例尺寸的話
修訂:當所有的行或列採用比例尺寸時
譯文:作用是控制哪兩行或哪兩列,應該受到尺寸改變的影響
修訂:作用是控制哪兩行或哪兩列應該改變尺寸
6.5.3 P122
譯文:作為比較,圖6-16展示了……
修訂:為了讓大家有個比較,圖6-16展示了……
7.2.2
譯文:使用Hyperlinks
修訂:使用Hyperlink(超連結)
P158
譯文:然而,在使用導航日誌導航的情況下,你可以把JournalEntry.KeepAlive附加屬性設定為true,這樣可以強迫Page重用同一個執行個體。
排版錯誤,應該在“提示”內。
7.2.2.4 P159
譯文:無論導航是否使用Navigate、Hyperlinks或導航日誌……
修訂:無論導航使用Navigate方法、Hyperlink元素還是導航日誌……
7.2.3.2 P161
譯文:能夠通過前面討論過的3種方法裡面的前兩種來完成這種需求
修訂:你能通過前面提到的3種方法裡的前兩種來完成這一需求。
7.4 P168
譯文:在WPF中建立非正方形視窗是非常容易的。
修訂:在WPF中建立非矩形視窗是非常容易的。
8.1.2 P182
譯文:(提示)這些也可以用兩個斜杠或逗號,而不是3個
修訂:這些也可以用2個斜杠或2個逗號,而不一定要3個。
8.2.2.1 P189
原文:Factoring XAML
譯文:漏
修訂:分解XAML
8.2.2.2 P190
譯文:也可以調用TryFindResource
修訂:你也可以調用TryFindResource
P191
譯文:與下面的c#代碼實現了相同的功能
修訂:與下面的c#代碼實現的功能是一樣的:
8.2.3 P192
譯文:WPF中適合使用DynamicResource最明顯的地方是……
修訂:WPF中最適合使用DynamicResource的地方是……
8.3 P193
譯文:它是對你的軟體做本地化的基礎
修訂:而是對軟體進行本地化的基礎。
譯文:邏輯資源最有意思的(或許也是最重要的)的應用在於將它應用到一些像……
修訂:邏輯資源最有意思(或許也是最重要)的應用在於將它應用到一些像
9.1.1 P194
譯文:想象一下,需要向Photo Gallery應用程式
修訂:想象一下,如果你要向Photo Gallery應用程式
9.1.4 P200
譯文:儘管Label.Content是Object類型的,但TextBlock.Text是一個字串。因此,當Label.Content被設定為一個字串時,Label經曆了一次類型轉換,ToString方法被調用。
修訂:儘管Label.Content是Object類型的,但TextBlock.Text是字串類型的。因此,當Label被賦給一個字串時,會經曆了一次類型轉換,同時調用了ToString方法。
9.1.5 P200
譯文:很明顯,預設的photos集合的顯示方式——即用ToString呈現——並不能讓人接受。
修訂:很明顯,photos集合預設的顯示方式並不能讓人接受,因為它是用ToString來呈現照片的。
9.3 P210
譯文:多選取器會指向相同的源集合
修訂:多個選取器(Selector)會指向相同的源集合
10.1 P237
譯文:一個靈敏的讀取器可能需要知道代碼清單中Setter如何對InkCanvas產生影響
修訂:精明的讀者可能想知道代碼清單中Setter如何對InkCanvas產生影響。
10.2 P244
譯文:每個控制項的原始碼與它的預設可視樹表示或可視原始碼,visual source code完全隔離
修訂:每個控制項的原始碼與它的預設可視樹表示(或這說可視原始碼,visual source code)完全隔離
10.2.1 P246
譯文:(提示)在代碼清單10-4中,在控制項範本的可視樹中,Button是被作為元素的模板化父類的。
修訂:(提示)在代碼清單10-4的控制項範本的可視樹中,Button是被作為元素的父模板元素(templated parent)的。
10.3 P265
譯文:或者一個讓控制項失去外觀的模板的皮膚呢?你其實有很多種方法來隊一隻貓上色!(雙關語)
修訂:又如何處理一個讓控制項失去外觀的模板的皮膚呢?就好比你可以有很多種方法對一隻貓染色一樣!
10.4.2 P268
譯文:(代碼)[程式集:ThemeInfo(...)]
修訂:[Assembly: ThemeInfo(...)]
11.1.2 P284
譯文:它包含了一組用短劃線的寬度以及之間的距離這樣的模式表示的值
修訂:它包含了一組值,這些值按照短劃線的寬度、它們之間的距離這樣的方式排列。
11.2 P286
譯文:比如說透明和剪下
修訂:比如說Opacity(透明)屬性和Clip(剪下)屬性
11.3.2 P299
譯文:在發現了Rectangle的靈活性,並且意識到它可以被繪製成為看上去像橢圓(或者圓形)的樣子之後,你可能會認為一個單獨的Ellipse類是多餘的。
修訂:當你發現Rectangle十分靈活,靈活到能夠把它繪製成看似橢圓(或者圓形)的形狀時,你可能會覺得這樣一個單獨的Ellipse很多餘。
11.3.4 P300
譯文:圖11-18繪製了下面的4個Polyline類型轉換器可以使Point只用一組互動的x、y值來表示。……你可以在每一個之間放置逗號……
修訂:圖11-18繪製了下面的4個Polyline,類型轉換器可以用一組互動的x、y值把這些Point對象表示出來。……你可以在每個值之間放上一個逗號。
譯文:圖11-19示範了對象不閉合的PatGeometry這樣的幾何體,設定了Polyline的Fill屬性後的填充效果,這就好像……
修訂:圖11-19示範了通過Polyline的Fill屬性產生的類似於不閉合的PathGeometry這樣的幾何形狀,這就好像……
11.4 P303
譯文:它的過濾回呼函數在可視樹的遍曆過程中剪除了禁用的和不可見的UIElement,它的結果處理回呼函數……
修訂:在可視樹的遍曆過程中,它的過濾回呼函數將剔除那些被禁用或者不可見的UIElement,而它的結果處理回呼函數……
11.4.3 P315
原文:Opacity Mask (所有詞都要替換)
譯文:透明掩碼
修訂:透明遮罩(Opacity Mask )
P316
譯文:你甚至可以將OpacityMake應用到頂層Window!
修訂:你甚至可以將OpacityMask應用到頂層Window!
12.2.1 P326
譯文:座標系統的左右手指的是……
修訂:座標系統的左右手性質指的是……
12.2.2 P327
譯文:(注意)圖12-8展示了當將Camera移到離房子模型太近的地方時,會是發生什麼。
修訂:圖12-8展示了將Camera移到離房子模型太近的地方時,會發生什麼。
12.2.3 P330
譯文:UpDirction/LookDirction
修訂:UpDirection/LookDirection
12.4 P340
譯文:Model3D是用來為情境構建為3D模型的基本組件
修訂:Model3D是在情境中構建3D模型的基本組件。
13.1.2 P366
譯文:即使泛型是完全支援的,這些類也有一些不適合泛型的方面
修訂:即使完全支援泛型,這些類也有不適合使用泛型的地方。
13.1.3.5 P372
譯文:(代碼注釋)在一行中執行動畫兩次
修訂:用一行代碼執行同一個動畫兩次
14.4.2 P412
譯文:正如第4章中所提到的,一個FlowDocument可以在一個RichTextBox中查看(及編輯)
修訂:正如第4章中所提到的,一個FlowDocument可以在RichTextBox中被查看(或編輯)
15.2 P434
譯文:即使你不需要這些額外的“燦爛”,……
修訂:即使你不需要這些錦上添花的東西,……
譯文:我們使用一個叫做DocumentViwer的內建WPF控制項
修訂:我們將使用一個叫做DocumentViewer的內建WPF控制項