2014-09-10 1 views
2

j'ai besoin symbole de l'infini dans TextBlocksymbole de l'infini dans TextBlock

Si j'écris "∞" en TextBlock.Text tout bon, en TextBlock symbole « ∞ ».

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

Mais si j'utilise Converter.

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

J'ai texte "&#8734;" dans 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(); 
     } 
    } 

Y at-il une solution?

+1

Je crois que dans votre convertisseur vous renvoyez la version codée XML de l'infini, mais il devrait retourner le symbole de l'infini brut? – DavidG

+0

merci, Sliver2009 a donné une réponse – Alexandr

Répondre

1

Je trouve ce sujet sur 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)); //ɢ♠♤ä<>&'" 

Donc, si vous avez une chaîne avec HtmlEntities vous pouvez utiliser

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

&#8734;, alias &#x221E; est une référence de caractère XML, il est transformé en caractère U + 221E lorsque le fichier XML le contenant est analysé. Cependant, en dehors de XML, dans un littéral de chaîne C#, la séquence &# ne signifie rien de spécial, juste une esperluette et un hachage. Les littéraux de chaîne en C# utiliser le caractère anti-slash pour leurs évasions plutôt que des références de caractères XML de style afin d'inclure un signe de l'infini dans un littéral chaîne ASCII-safe:

return "\u221E"; 

Ou si votre éditeur et compilateur d'accord sur le code source de codage , vous pouvez dire simplement:

return "∞";