Непрерывное пространство в XAML по сравнению с кодом

Это прекрасно работает и правильно вставляет неразрывные пробелы в строку:

<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, но не в коде?

Ответы

Ответ 1

Вы пробовали return value.ToString().Replace(' ', System.Convert.ToChar(160));?

Ответ 2

В коде синтаксис для экранирования символов Unicode отличается от XAML:

XAML: &#160;
C#:   \x00A0

Итак, это должно было работать в коде:

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

Ответ 3

Причина Char работает, а строка не указана - это то, что строка выводится при визуализации.