如何在 XAML(XML/HTML) 內輸入特殊字元符號的心得筆記
在設計 WPF 專案時,當字串內包含特殊符號在 code-behind 是沒什麼問題,但問題是想要在 XAML 下處理就不太一樣了
比如要將字串斷行,在 C# 程式碼上只要填入 "\n" "\r" "\r\n" 都可以達到效果(各語言/系統平台上還是有些差異)
但在 XAML 的 TextBlock 要寫如下才能斷行
<TextBlock FontSize="16"
Foreground="#CCCCCC">
<Run>Line1</Run>
<LineBreak/>
<Run>Line2</Run>
</TextBlock>
如果用如以下方式,那就跟預期的效果不一樣
<TextBlock FontSize="16"
FontWeight="Normal"
Foreground="#CCCCCC"
Text="Line1
Line2">
</TextBlock>
那有辦法在 Text 屬性中完成整個字串的處理嗎?
有的!要用跳脫序列(Escape Sequence)或稱字元實體(Character Entity),如下 這一串就是跳脫序列
<TextBlock FontSize="16"
FontWeight="Normal"
Foreground="#CCCCCC"
Text="Line1
Line2">
</TextBlock>
XAML/XML/HTML 中具特別用途的字元(如: <, >, &, ", ')與特殊字元都無法直接使用,而想要顯示這些字元也是需要使用跳脫序列
跳脫序列由三個部分組成:1. 以 & 符號開始 2. 實體名稱或 #實體編號 3. 以 ; 符號結束
比如 < 的跳脫序列為:< / < / < / < / < 都可以達到相同效果
再舉個例子用希臘字母 Sigma 的有效字元值參照如下
可以發現 &#(實體編號); 的實體編號是字元 ASCII 十進位編號;&#x(實體編號); 的實體編號是字元 ASCII 十六進位編號!
請參照維基百科的 ASCII控制字元的編號
在 XAML 上我試過可用的實體名稱只有雙引號("),&符號(&),小於符號(<),大於符號(>)這四個,若有其他可用的實體名稱也請大大們告知,感恩~m(_ _)m
以下列出常用的跳脫序列
顯示 | 說明 | 實體名稱 | 十進制編號 | 十六進制編號 |
" | 雙引號 | " | " | " |
& | &符號 | & | & | & |
< | 小於符號 | < | < | < |
> | 大於符號 | > | > | > |
不間斷空格(non-breaking space) |   |   | ||
' | 單引號 | ' | ' | |
跳位(Tab, \t) | 	 | 	 | ||
換行(Line Feed, \n) | | 
 | ||
回車(Carriage Return, \r) | | 
 | ||
空白(Space) |   |   | ||
+ | 加號 | + | + | |
- | 減號 | - | - | |
× | 乘號 | × | × | |
÷ | 除號 | ÷ | ÷ | |
= | 等於符號 | < | = | |
≠ | 不等於符號 | ≠ | ≠ | |
± | 正負號 | ± | ± | |
Α | 希臘字母Alpha(大寫) | Α | Ƈ | |
Β | 希臘字母Beta(大寫) | Β | ƈ | |
Γ | 希臘字母Gamma(大寫) | Γ | Ɖ | |
Δ | 希臘字母Delta(大寫) | Δ | Ɗ | |
Ε | 希臘字母Epsilon(大寫) | Ε | Ƌ | |
Ζ | 希臘字母Zeta(大寫) | Ζ | ƌ | |
Η | 希臘字母Eta(大寫) | Η | ƍ | |
Θ | 希臘字母Theta(大寫) | Θ | Ǝ | |
Ι | 希臘字母Iota(大寫) | Ι | Ə | |
Κ | 希臘字母Kappa(大寫) | Κ | 'A; | |
Λ | 希臘字母Lambda(大寫) | Λ | 'B; | |
Μ | 希臘字母Mu(大寫) | Μ | 'C; | |
Ν | 希臘字母Nu(大寫) | Ν | 'D; | |
Ξ | 希臘字母Xi(大寫) | Ξ | 'E; | |
Ο | 希臘字母Omicron(大寫) | Ο | 'F; | |
Π | 希臘字母Pi(大寫) | Π | A0; | |
Ρ | 希臘字母Rho(大寫) | Ρ | A1; | |
Σ | 希臘字母Sigma(大寫) | Σ | A3; | |
Τ | 希臘字母Tau(大寫) | Τ | A4; | |
Υ | 希臘字母Upsilon(大寫) | Υ | A5; | |
Φ | 希臘字母Phi(大寫) | Φ | A6; | |
Χ | 希臘字母Chi(大寫) | Χ | A7; | |
Ψ | 希臘字母Psi(大寫) | Ψ | A8; | |
Ω | 希臘字母Omega(大寫) | Ω | A9; | |
α | 希臘字母Alpha(小寫) | α | B1; | |
β | 希臘字母Beta(小寫) | β | B2; | |
γ | 希臘字母Gamma(小寫) | γ | B3; | |
δ | 希臘字母Delta(小寫) | δ | B4; | |
ε | 希臘字母Epsilon(小寫) | ε | B5; | |
ζ | 希臘字母Zeta(小寫) | ζ | B6; | |
η | 希臘字母Eta(小寫) | η | B7; | |
θ | 希臘字母Theta(小寫) | θ | B8; | |
ι | 希臘字母Iota(小寫) | ι | B9; | |
κ | 希臘字母Kappa(小寫) | κ | BA; | |
λ | 希臘字母Lambda(小寫) | λ | BB; | |
μ | 希臘字母Mu(小寫) | μ | BC; | |
ν | 希臘字母Nu(小寫) | ν | BD; | |
ξ | 希臘字母Xi(小寫) | ξ | BE; | |
ο | 希臘字母Omicron(小寫) | ο | BF; | |
π | 希臘字母Pi(小寫) | π | C0; | |
ρ | 希臘字母Rho(小寫) | ρ | C1; | |
σ | 希臘字母Sigma(小寫) | σ | C3; | |
τ | 希臘字母Tau(小寫) | τ | C4; | |
υ | 希臘字母Upsilon(小寫) | υ | C5; | |
φ | 希臘字母Phi(小寫) | φ | C6; | |
χ | 希臘字母Chi(小寫) | χ | C7; | |
ψ | 希臘字母Psi(小寫) | ψ | C8; | |
ω | 希臘字母Omega(小寫) | ω | C9; | |
© | 版權符號 | © | © | |
® | 已註冊商標 | ® | ® | |
™ | 商標(美國) | ™ | ™ |
補充一點,在字串中間加入數個空格在 XAML 是可以正常顯示,但如果加在字串開頭或是字串結尾則只保留一個
因此當在字串開頭或結尾加入空格來調整顯示樣式就必須要用   來替換空白才能正確顯示!