views:

45

answers:

2

This works fine, and correctly inserts non-breaking spaces into the string:

<TextBlock Text="Non&#160;Breaking&#160;Text&#160;Here"></TextBlock>

But what I really need is to replace spaces with non-breaking spaces during data binding. So I wrote a simple value converter that replaces spaces with "&#160;". It does indeed replace spaces with "&#160;" but "&#160;" is displayed literally instead of showing as a non-breaking space. This is my converter:

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
}

Does anybody know why it works in XAML, but not in code?

/Henrik

+3  A: 

Have you tried return value.ToString().Replace(' ', System.Convert.ToChar(160)); ?

bitbonk
Perfect! Thanks! Do you know why it is necessary to work with char rather than string?
Henrik Söderlund
It should work with the string override too. Just cast the ToChar() to string afterwards.
bitbonk
+1  A: 

The reason Char is working and string is not - is that the string is escaped when rendered.

Goblin
Of course. Thanks
Henrik Söderlund