关于XAML中是如何处理空格的,MSDN上给出了详细的描述:http://msdn.microsoft.com/en-us/library/cc189036%28v=VS.95%29.aspx#whitespace
摘重要的简单说一下:
空格、回车、制表符都被当做空格。
连续的空格会被合并为一个空格。
<tag>后紧邻的空格会被忽略。</tag>前紧邻的空格会被忽略。换句话说,解析器对<tag>…</tag>中间的字符串做Trim。
如何保留空格
给元素加上属性 xml:space="preserve"
设置了这个属性之后,会保留元素中所有的空格,不会合并连续空格,也不会trim两头的空格。
这个方法有个不便,就是它会保留元素中所有的空格,哪怕这些空格是由代码格式规整化后产生的。这就意味着,你不能用ctrl+E,F这样的快捷键来整理代码格式了,一旦不小心整理了,改回来都很麻烦。

因为XAML支持直接写Unicode代码,这串代码代表一个non breaking space.
复杂的文本
带有复杂格式的文本,建议使用RichTextBox。
因为文本元素分为block和inline两种,TextBlock仅允许包含inline,所以用来展示少量的文本比较合适。
如果格式比较复杂,注意用好span,span与run的不同在于,span不会继承父元素的格式,相当于重置格式,不受父元素格式的影响。
* 换行
在XAML中输入回车会被当做一个空格,所有换行要用<LineBreak/>。
另外,两个Run相邻,如果是如下排列:

<Run>ab</Run><Run>cd</Run>

则显示成:

abcd

会自动在两个Run之间加上换行符。
如果要让回车去掉,显示成abcd,则应该写在一行里:

<Run>ab</Run><Run>cd</Run>

* Tab
首先,XAML中没有tab,只能用连续的空格来代替。
需要注意,在将一个string赋值给RichTextBox的Xaml属性时,会合并掉连续的空格,所有如果要保留tab(连续的空格),需要进行这样一个workaround:

private const string TAB = "    ";private const string TAB_PLACEHOLDER = "===TAB===";textBox1.Text = richTextBox1.Xaml;string xaml = richTextBox1.Xaml;xaml = xaml.Replace(TAB, TAB_PLACEHOLDER);richTextBox2.Xaml = xaml;foreach (Block block in richTextBox2.Blocks){    foreach (Inline inline in ((Paragraph)block).Inlines)    {        ((Run)inline).Text = ((Run)inline).Text.Replace(TAB_PLACEHOLDER, TAB);    }}

先用一个占位符来代替四个空格,这样在给richTextBox的xaml属性赋值的时候就不会合并空格了。
然后再替换这个占位符,赋完值替换的时候不会进行合并。
==================================================
XAML被XML规则绑定。例如XML对几个特殊字符有特别意义,像&,<,>。如果你尝试用这些值来设置一个元素的内容,你可能会出错,因为XAML解析器假设你正在试图做某些事情,比如创建嵌套元素。你可以使用字符实体,例如<用<,>用>,&用&,"用" 特殊字符不是你运行XAML的一障碍,另外一个是空格处理。一个字符串前,后,字符串中的空格,TAB,回车键都会被忽视掉,只保留一个空格。你可以使用XML:space="preserve",保留任何空格,TAB,回车键。注意,这些规则只对XAML有用,如果你在代码中设置内容,任何空格都会保留。
特殊字符和空格
下面的字符在 [XML]中被定义为 空白(whitespace)字符:
空格 ( )
Tab ()
回车 ()
换行 ( )

更多相关文章

  1. XML中的标签与元素的使用具体介绍
  2. XML学习(一)元素,属性,读取详解
  3. 详解在XML文档中替换元素名称的方法(图)
  4. XML开发基础-XML元素
  5. 详解使用XML Schema定义元素的基本知识(图文)
  6. 解说xml中的空格
  7. jscript和vbscript对XML元素属性进行操作的方法
  8. 分享一个jscript与vbscript操作XML元素属性的方法
  9. C#中通过xpath查找xml的指定元素的代码实例

随机推荐

  1. Android之使用GPS和NetWork定位
  2. Android中文资源站专栏:五个好用的日常软
  3. Android设备的ID
  4. Android获取设备唯一ID
  5. Android关于布局、设计的常识【整理】
  6. Android设置GPS及获取经纬度坐标
  7. Android平台搭建过程中的问题
  8. Android用户看过来,免ROOT和顽固后台拜拜
  9. 【Android笔记】Android统计文件夹大小,删
  10. 让 Android 可以识别BMP图片文件,且目前A