溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

?XAML中如何處理空格

發(fā)布時(shí)間:2021-09-17 14:39:21 來源:億速云 閱讀:169 作者:小新 欄目:編程語言

這篇文章主要介紹XAML中如何處理空格,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

XAML中是如何處理空格的,MSDN上給出了詳細(xì)的描述:http://msdn.microsoft.com/en-us/library/cc189036%28v=VS.95%29.aspx#whitespace
摘重要的簡單說一下:
空格、回車、制表符都被當(dāng)做空格。
連續(xù)的空格會被合并為一個(gè)空格。
<tag>后緊鄰的空格會被忽略。</tag>前緊鄰的空格會被忽略。換句話說,解析器對<tag>…</tag>中間的字符串做Trim。
如何保留空格
給元素加上屬性 xml:space="preserve"
設(shè)置了這個(gè)屬性之后,會保留元素中所有的空格,不會合并連續(xù)空格,也不會trim兩頭的空格。
這個(gè)方法有個(gè)不便,就是它會保留元素中所有的空格,哪怕這些空格是由代碼格式規(guī)整化后產(chǎn)生的。這就意味著,你不能用ctrl+E,F這樣的快捷鍵來整理代碼格式了,一旦不小心整理了,改回來都很麻煩。
因?yàn)閄AML支持直接寫Unicode代碼,這串代碼代表一個(gè)non breaking space.
復(fù)雜的文本
帶有復(fù)雜格式的文本,建議使用RichTextBox。
因?yàn)槲谋驹胤譃閎lock和inline兩種,TextBlock僅允許包含inline,所以用來展示少量的文本比較合適。
如果格式比較復(fù)雜,注意用好span,span與run的不同在于,span不會繼承父元素的格式,相當(dāng)于重置格式,不受父元素格式的影響。
* 換行
在XAML中輸入回車會被當(dāng)做一個(gè)空格,所有換行要用<LineBreak/>。
另外,兩個(gè)Run相鄰,如果是如下排列:

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

則顯示成:

ab
cd

會自動在兩個(gè)Run之間加上換行符。
如果要讓回車去掉,顯示成abcd,則應(yīng)該寫在一行里:

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

* Tab
首先,XAML中沒有tab,只能用連續(xù)的空格來代替。
需要注意,在將一個(gè)string賦值給RichTextBox的Xaml屬性時(shí),會合并掉連續(xù)的空格,所有如果要保留tab(連續(xù)的空格),需要進(jìn)行這樣一個(gè)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);
    }
}

先用一個(gè)占位符來代替四個(gè)空格,這樣在給richTextBox的xaml屬性賦值的時(shí)候就不會合并空格了。
然后再替換這個(gè)占位符,賦完值替換的時(shí)候不會進(jìn)行合并。
==================================================
XAML被XML規(guī)則綁定。例如XML對幾個(gè)特殊字符有特別意義,像&,<,>。如果你嘗試用這些值來設(shè)置一個(gè)元素的內(nèi)容,你可能會出錯(cuò),因?yàn)閄AML解析器假設(shè)你正在試圖做某些事情,比如創(chuàng)建嵌套元素。你可以使用字符實(shí)體,例如<用<,>用>,&用&,"用" 特殊字符不是你運(yùn)行XAML的一障礙,另外一個(gè)是空格處理。一個(gè)字符串前,后,字符串中的空格,TAB,回車鍵都會被忽視掉,只保留一個(gè)空格。你可以使用XML:space="preserve",保留任何空格,TAB,回車鍵。注意,這些規(guī)則只對XAML有用,如果你在代碼中設(shè)置內(nèi)容,任何空格都會保留。
特殊字符和空格
下面的字符在 [XML]中被定義為 空白(whitespace)字符:
空格 ( )
Tab ( )
回車 ( )
換行 ( )

以上是“XAML中如何處理空格”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI