2014-09-10 6 views
2

Мне нужен символ бесконечности в TextBlockсимвол бесконечности в TextBlock

Если я пишу "∞" в TextBlock.Text все хорошо, в TextBlock символ «∞».

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

Но если я использую Converter.

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

У меня есть "&#8734;" текст TextBlock.

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(); 
     } 
    } 

Есть ли решение?

+1

Я считаю, что в вашем конвертере вы возвращаете версию бесконечной XML-кодировки, но она должна возвращать символ необработанной бесконечности? – DavidG

+0

спасибо, Sliver2009 дал ответ – Alexandr

ответ

1

Я нашел эту тему на 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;"); 
7

&#8734;, он же &#x221E; является ссылка XML характер, то превратился в символ U + 221E при анализе XML-файла, содержащего его. Однако вне XML, в строковом литерале C# последовательность &# не означает ничего особенного, просто амперсанд и хэш. Строковые литералы в C# использовать символ обратной косой черты для их побегах, а не ссылки на символы XML-стиль так, чтобы включать в себя знак бесконечности в качестве ASCII-безопасной строкового литерала:

return "\u221E"; 

Или, если ваш редактор и компилятор согласовать кодировку исходного кода , вы можете сказать просто:

return "∞";