XAML与代码中的不间断空间

时间:2010-05-31 13:18:28

标签: wpf silverlight xaml silverlight-4.0 whitespace

这样可以正常工作,并在字符串中正确插入不间断空格:

<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中有效,但在代码中却不行吗?

3 个答案:

答案 0 :(得分:14)

您是否尝试过return value.ToString().Replace(' ', System.Convert.ToChar(160));

答案 1 :(得分:11)

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

XAML: &#160;
C#:   \x00A0

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

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

答案 2 :(得分:4)

Char工作的原因是字符串不是 - 是字符串在渲染时被转义。