Comment mettre un caractère unicode en XAML?


104

J'essaye de faire ceci:

<TextBlock Text="{Binding Path=Text, 
                          Converter={StaticResource stringFormatConverter}, 
                          ConverterParameter='&\u2014{0}'}" />

Pour faire apparaître un - devant le texte. Ça ne marche pas. Que dois-je faire ici?

Réponses:


196

Puisque XAML est un format de fichier XML, vous pouvez essayer le caractère d'échappement XML. Donc au lieu d'écrire &\u2014, vous pouvez écrire à la &#x2014;place.


Merci. J'ai essayé & mdash; et \ u2014, mais pas ça. Ça a marché.
Alex Baranosky le

4
Vous étiez proche, en hexa & # x20ac; et en unicode décimal & # 8364; vous obtiendrez et Euro :)
user347594

Oui, mais que faire si vous voulez un caractère UTF-32, comme les notes de musique de la police Symbola qui sont au-dessus de 0x10000?
Ruud van Gaal

Merci pour l'indice. Cependant, cela n'a fonctionné pour moi que lorsque j'ai mis mon caractère Unicode directement dans Text = "...". Lors de l'utilisation d'une liaison avec mon ViewModel, j'ai dû utiliser une variable de chaîne contenant "\ u2014".
flocbit

9

En xaml, je l'ai fait comme ceci:

    <Button Grid.Column="1" Grid.RowSpan="2" Name="start" Margin="5" Click="start_Click">
        <TextBlock Name="test" FontFamily="pack://application:,,,/Y_Yoga;Component/Resources/#FontAwesome">&#xF04B;</TextBlock>
    </Button>

J'espère être utile!


3

À partir de la documentation Microsoft :

Les fichiers de balisage créés dans Microsoft Visual Studio sont automatiquement enregistrés au format de fichier Unicode UTF-8, ce qui signifie que la plupart des caractères spéciaux, tels que les accents, sont codés correctement. Cependant, il existe un ensemble de caractères spéciaux couramment utilisés qui sont traités différemment. Ces caractères spéciaux suivent la norme XML du World Wide Web Consortium (W3C) pour le codage.

Cela signifie que vous pouvez faire zalgo pour tout ce que vous aimez

entrez la description de l'image ici

Bit de code pertinent:

<Label Grid.Column="0" Grid.Row="3" FontWeight="ExtraBlack">STAGE:M&#x363;&#x36d;&#x363;&#x33e;  V&#x363;&#x365;&#x36d;&#x35b;&#x364;&#x36e;&#x365;&#x368;&#x365;&#x367;&#x33e;</Label>

3

Je suis venu sur cette page pour une autre raison, mais cela n'inclut pas la solution la plus simple et la plus évidente.

C'est ce que je fais.

Conservez une classe statique avec toutes les valeurs Unicode.

 public static class Icons
{
    public const string IconName = "\u2014";
}

Et puis liez-le là où vous en avez besoin.

<TextBlock Text="{x:Static resources:Icons.IconName}" FontFamily="..."/>

Cela vous aide également à la maintenance, toutes les icônes seraient à gérer au même endroit.


1

Enregistrez le fichier sous UTF-8. Dans Visual Studio, vous pouvez le faire en allant "Fichier" → "Options d'enregistrement avancées".

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.