























由于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属性赋值的时候就不会合并空格了。
然后再替换这个占位符,赋完值替换的时候不会进行合并。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。