默认情况下,XAML折叠所有空白,这意味着包含空格、tab 键以及回车的长字符串将被转换为单个空格。而且,如果在一个元素内容之前或之后添加空白,这个空格将被完全忽略。
有时这并不是所期望的结果。例如,可能希望在按钮文本中包含一系列空格。在这种情况下,需要为元素使用 xml:space="preserve" 特性。
xml:space 特性是 XML 标准的一部分,并且是一个要么包含全部,要么什么都不包括的设置。一旦使用了设置,元素内的所有空白字符将被保留。如下标记:
<TextBox Name=""txtQuestion" xml:space="preserve" ...> [这是一段文本 很多个空格 来自 Andrew Blog] </TextBox>
在这个示例中,文本框的文本在实际文本之前将包含硬回车、tab 字符等。在显示的文本中也包含一系列空格之后还跟有一个硬回车字符。
如果只是想保留内部空格,则需要使不是很便于阅读的标记:
<TextBox Name=""txtQuestion" xml:space="preserve" ... >[这是一段文本 很多个空格 来自 Andrew Blog]</TextBox>
上面的这个技巧是为了确保在开始符号>和具体内容之间,以及具体内容和结束符号<之间没有空白。
当然,这个问题只存在于 XAML 标记中。如果通过代码设置文本框中的文本,所有空格都将被使用。