2013-01-02 31 views
0

我需要在代碼中的字符串中顯示TextBlock中的特殊字符。設置帶有特殊字符的文本

<TextBlock x:Name="tboxData" TextWrapping="Wrap" Text="&gt;&gt; &lt;&lt;" /> 

工作,但我需要從C#做到這一點:

tboxData.Text = "&gt;&gt; &lt;&lt;"; 

這不TextBlock的打印>> < <

我該怎麼辦?

回答

3

假設你可能需要使用編碼字符出於某種原因(也許你不使用文字和XML文件或東西正在讀):

tboxData.Text = System.Web.HttpUtility.HtmlDecode("&gt;&gt; &lt;&lt;") 

請注意,您必須添加一個參考System.Web組件。

+2

用於用例,但如果您的目標是.NET 4(客戶端或完整版),則可以使用[System.Net.WebUtility.HtmlDecode](http://msdn.microsoft.com/en-us/library /ee388354.aspx),而不是爲了避免在不需要'System.Web'來引用'System.Web'程序集。 – keyboardP

+0

謝謝!我針對.NET 4. System.Net.WebUtility.HtmlDecode工作得很好。這就是我需要的。 –

3

只需使用:

tboxData.Text = ">><<"; 

你不必寫在C#中的字符串時,擔心HTML實體。它必須在XAML中完成,因爲這些字符表示代碼的開始和結束標記。

+0

大字符串(不僅是那四個字符)正在從Web服務接收,所以我不能手動設置文本。它只是爲了更好的可視化。我從另一個答案使用System.Net.WebUtility.HtmlDecode,它有所幫助。謝謝。 –

4

不應該這樣工作嗎?

tboxData.Text = ">><<"; 

的XAML要求您使用的編碼的原因是因爲XAML解析<>字符,所以你需要確保解析器知道你想顯示<>字符,而不是解析它們作爲標記。

+0

你打敗了我! – codingbiz

+0

這是不可能的,因爲我從Web服務接收字符串,並且它已經包含這些字符。 –