2010-05-31 57 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");