Неразрывный пробел в XAML против кода - PullRequest
15 голосов
/ 31 мая 2010

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

<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 ]

14 голосов
/ 31 мая 2010

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

11 голосов
/ 18 марта 2014

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

XAML: &#160;
C#:   \x00A0

Так что это должно работать в коде:

return value.ToString().Replace(" ", "\xA0");
4 голосов
/ 01 июня 2010

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

...