摘主要的简单说一下:
空格、回车、制表符都被当作空格。
一连的空格会被兼并为一个空格。
<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>
则显现成:
ab cd
会自动在两个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 ( )
回车 ( )
换行 ( )
以上就是XML迥殊字符和空格 换行 转义符的代码细致引见的细致内容,更多请关注ki4网别的相干文章!