开发者

Non breaking space in XAML vs. code

开发者 https://www.devze.com 2023-01-01 21:52 出处:网络
This works fine, and correctly inserts non-breaking spaces into the string: <TextBlock Text=\"Non&#160;Breaking&#160;Text&#160;Here\"></TextBlock>

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 "&开发者_如何学Pythonamp;#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?


In code the syntax for escaping Unicode chars is different than in XAML:

XAML: &#160;
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.

0

精彩评论

暂无评论...
验证码 换一张
取 消