XAML与代码中的不间断空间

Hen*_*und 17 silverlight wpf whitespace xaml silverlight-4.0

这工作正常,并正确地将不间断的空格插入到字符串中:

<TextBlock Text="Non&#160;Breaking&#160;Text&#160;Here"></TextBlock>
Run Code Online (Sandbox Code Playgroud)

但我真正需要的是在数据绑定期间用不间断的空格替换空格.所以我写了一个简单的值转换器,用" &#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
}
Run Code Online (Sandbox Code Playgroud)

有人知道它为什么在XAML中工作,但不在代码中吗?

bit*_*onk 15

你试过return value.ToString().Replace(' ', System.Convert.ToChar(160));吗?


JCH*_*H2k 13

在代码中,转义Unicode字符的语法与XAML中的语法不同:

XAML: &#160;
C#:   \x00A0
Run Code Online (Sandbox Code Playgroud)

所以这应该在代码中起作用:

return value.ToString().Replace(" ", "\xA0");
Run Code Online (Sandbox Code Playgroud)