Come inserire un carattere Unicode in XAML?


104

Sto provando a farlo:

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

Per far apparire un - davanti al testo. Non funziona. Cosa dovrei fare qui?

Risposte:


196

Poiché XAML è un formato di file XML, potresti provare l'escape di caratteri XML. Quindi invece di scrivere &\u2014, potresti scrivere &#x2014;invece.


grazie. Ho provato & mdash; e \ u2014, ma non quello. Ha funzionato.
Alex Baranosky

4
Eri vicino, in hexa & # x20ac; e in unicode decimale & # 8364; riceverai e Euro :)
user347594

Sì, ma cosa succede se si desidera un carattere UTF-32, come le note musicali nel carattere Symbola che sono superiori a 0x10000?
Ruud van Gaal

Grazie per il suggerimento. Tuttavia questo ha funzionato solo per me quando ho inserito il mio carattere Unicode direttamente all'interno di Text = "...". Quando si utilizza un binding con il mio ViewModel ho dovuto utilizzare una variabile stringa contenente "\ u2014".
flocbit

9

In xaml l'ho fatto in questo modo:

    <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>

Spero di esserti stato d'aiuto!


3

Dalla documentazione Microsoft :

I file di markup creati in Microsoft Visual Studio vengono salvati automaticamente nel formato di file Unicode UTF-8, il che significa che la maggior parte dei caratteri speciali, come i segni di accento, sono codificati correttamente. Tuttavia, esiste una serie di caratteri speciali di uso comune che vengono gestiti in modo diverso. Questi caratteri speciali seguono lo standard XML del World Wide Web Consortium (W3C) per la codifica.

Ciò significa che puoi fare zalgo per tutto ciò che ti interessa

inserisci qui la descrizione dell'immagine

Bit di codice rilevante:

<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

Sono arrivato a questa pagina per qualche altro motivo, ma questo non include la soluzione più semplice e ovvia.

Questo è ciò che faccio.

Mantieni una classe statica con tutti i valori Unicode.

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

E poi collegalo dove ne hai bisogno.

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

Questo ti aiuta anche con la manutenzione, tutte le icone sarebbero in un unico posto da gestire.


1

Salva il file come UTF-8. In Visual Studio, puoi farlo andando su "File" → "Opzioni di salvataggio avanzate".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.