XML特殊字符和空格 换行 转义符
由于XAML是一种XML,在里面写段文字都经常会遇到问题。 * 空格 关于XAML中是如何处理空格的,MSDN上给出了详细的描述:http://msdn.microsoft.com/en-us/library/cc189036%28v=VS.95%29.aspx#whitespace 摘重要的简单说一下:
如何保留空格
复杂的文本 带有复杂格式的文本,建议使用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 (	) 回车 (
) 换行 (
) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |