This works fine, and correctly inserts non-breaking spaces into the string:
<TextBlock Text="Non Breaking Text 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 "&开发者_如何学Pythonamp;#160;
". It does indeed replace spaces with " 
" but " 
" 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(" ", " ");
}
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?
In code the syntax for escaping Unicode chars is different than in XAML:
XAML:  
C#: \x00A0
So this should have worked in code:
return value.ToString().Replace(" ", "\xA0");
Have you tried return value.ToString().Replace(' ', System.Convert.ToChar(160));
?
The reason Char is working and string is not - is that the string is escaped when rendered.
精彩评论