代码改变世界

WPF Summary:XAML空白处理

2011-03-23 17:00  海蓓娜楽  阅读(457)  评论(0编辑  收藏  举报

默认情况下,当 XAML 处理器处理 XAML 文件时,将发生下列空白规范化:

Ø 移除东亚字符(指一组 Unicode 字符,也称为“CJK 表意文字”)之间的换行符;

Ø 将所有空白字符(空格、换行符和制表符)转换为空格;

Ø 删除所有连续的空格,将其替换为一个空格;

Ø 删除紧跟在开始标记后面的一个空格;

Ø 删除紧靠在结束标记前面的一个空格。

有几种方法可用于保留源 XAML 中的空白,以实现最终表示形式,这些方法不受 XAML 处理器空白规范化的影响。

xml:space="preserve":在需要保留空白的元素级指定此特性。请注意,这样将保留所有空白,包括代码编辑应用程序为了以视觉上直观的嵌套形式“精美输出”对齐元素而添加的空格,但是否呈现这些空白仍然是包含元素的内容模型的问题。不建议在根级别指定 xml:space="preserve",因为大多数对象模型不会以任何方式将空白视为有意义。更好的做法是:专门在可呈现字符串中空白的元素级别或者在空白有意义的集合的元素级别设置该特性。

实体和不间断空格:XAML 支持在文本对象模型中放置任何 Unicode 实体。 您可以使用专用的实体,如不间断空格(在 UTF-8 编码中为  )。 还可以使用支持不间断空格字符的多格式文本控件。 使用实体模拟布局特征(如缩进)时应谨慎,因为实体的运行时输出会由于许多因素而不同,而影响实体输出的因素(如正确使用面板和边距)要多于一般的布局工具。例如,实体映射到字体,并且可以根据用户的字体选择来更改大小。