2010-05-31 37 views
14

這工作得很好,並且正確地插入不間斷空格到字符串:非打破空間與代碼

<TextBlock Text="Non&#160;Breaking&#160;Text&#160;Here"></TextBlock> 

但我真正需要的是數據綁定過程中,以取代非中斷空格空格。所以我寫了一個簡單的值轉換器,用「&#160;」替換空格。它確實取代了帶有「&#160;」的空格,但字面上顯示了「&#160;」,而不是顯示爲非中斷空格。這是我的轉換器:

public class SpaceToNbspConverter : IValueConverter 
{ 
    #region IValueConverter Members 

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return value.ToString().Replace(" ", "&#160;"); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
} 

有人知道它爲什麼在XAML中有效,但不在代碼中?

+0

這是偉大的,我不知道如何之前做非破壞空間。謝謝你的問題!它回答了我自己的問題! – cplotts 2011-04-21 14:46:25

回答

13

你試過return value.ToString().Replace(' ', System.Convert.ToChar(160));

+0

完美!謝謝!你知道爲什麼有必要使用字符而不是字符串嗎? – 2010-05-31 14:05:37

+0

它也應該使用字符串覆蓋。只需將ToChar()轉換爲字符串。 – bitbonk 2010-05-31 19:01:20

3

Char正在工作的原因和字符串不是 - 是呈現時字符串轉義。

5

在代碼中轉義字符的Unicode的語法比XAML不同:

XAML: &#160; 
C#: \x00A0 

因此,這應該在代碼中工作過:

return value.ToString().Replace(" ", "\xA0");