【问题标题】:Non breaking space in XAML vs. codeXAML 与代码中的非中断空间
【发布时间】:2011-02-25 23:47:00
【问题描述】:

这工作正常,并且正确地在字符串中插入不间断的空格:

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

但我真正需要的是在数据绑定期间用不间断空格替换空格。所以我写了一个简单的值转换器,用“&amp;#160;”替换空格。它确实用“&amp;#160;”替换了空格,但“&amp;#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 中有效,但在代码中无效?

【问题讨论】:

  • 这太好了,我以前不知道如何做不间断空间。感谢您的提问!它回答了我自己的问题!

标签: wpf silverlight xaml silverlight-4.0 whitespace


【解决方案1】:

在代码中转义 Unicode 字符的语法与在 XAML 中不同:

XAML: &#160;
C#:   \x00A0

所以这应该在代码中起作用:

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

【讨论】:

  • 太棒了。我需要这个来调整 中的 。谢谢。
【解决方案2】:

你试过return value.ToString().Replace(' ', System.Convert.ToChar(160));吗?

【讨论】:

  • 完美!谢谢!你知道为什么需要使用 char 而不是 string 吗?
  • 它也应该与字符串覆盖一起使用。之后只需将 ToChar() 转换为字符串。
【解决方案3】:

Char 工作而字符串不工作的原因是字符串在呈现时被转义。

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 2016-11-18
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    相关资源
    最近更新 更多