在本书的最终印刷版中出现了不少问题,对此我感到十分遗憾,在此向各位读者表示深深的歉意! 

 

以下是勘误表的正文: 

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控件