【问题标题】:Infinity symbol in TextBlockTextBlock 中的无穷大符号
【发布时间】:2014-09-10 11:01:12
【问题描述】:

我需要TextBlock中的无穷大符号

如果我在TextBlock.Text 中写"∞" 一切都好,在TextBlock“∞”符号中。

<TextBlock Text="&#8734;"/> 

但如果我使用Converter

<TextBlock Text="{Binding MyValue, Converter={StaticResource MyConverter}}"/> 

我在TextBlock 中有"&amp;#8734;" 文本。

 public class MyConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {           
           return "&#8734;";           
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
           throw new NotImplementedException();
        }
    }

有什么解决办法吗?

【问题讨论】:

  • 我相信在您的转换器中,您返回的是 XML 编码版本的无穷大,但它应该返回原始无穷大符号?
  • 谢谢,Sliver2009 给出了答案

标签: c# windows-phone-8 unicode ivalueconverter


【解决方案1】:

&amp;#8734;,又名&amp;#x221E;是一个XML字符引用,在解析包含它的XML文件时,它变成了字符U+221E 。但是在 XML 之外,在 C# 字符串文字中,&amp;# 序列没有什么特别的意义,只是一个 & 和哈希。 C# 中的字符串文字使用反斜杠字符进行转义,而不是 XML 样式的字符引用,以便在 ASCII 安全字符串文字中包含无穷大符号:

return "\u221E";

或者如果你的编辑器和编译器在源代码编码上达成一致,你可以简单地说:

return "∞";

【讨论】:

    【解决方案2】:

    我在stackoverflow上找到了这个话题: Does C# have something like PHP's mb_convert_encoding()?

    string a = "ɢ♠♤ä<>&'\"";
    string b = HtmlEntities.Encode(a);
    Console.WriteLine(b); //&#610;&spades;&#9828;&auml;<>&'"
    Console.WriteLine(HtmlEntities.Decode(b)); //ɢ♠♤ä<>&'"
    

    所以如果你有一个带有 htmlEntities 的字符串,你可以使用

    return HtmlEntities.Decode("& #8734;");
    

    【讨论】:

      猜你喜欢
      • 2017-08-19
      • 1970-01-01
      • 2019-06-18
      • 2012-12-17
      • 2022-08-12
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      相关资源
      最近更新 更多