Wie füge ich ein Unicode-Zeichen in XAML ein?

104

Ich versuche das zu tun:

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

Um ein - vor dem Text erscheinen zu lassen. Es funktioniert nicht. Was soll ich hier machen?

Alex Baranosky
quelle

Antworten:

196

Da XAML ein XML-Dateiformat ist, können Sie versuchen, das XML-Zeichen zu maskieren. Anstatt zu schreiben &\u2014, könnten Sie &#x2014;stattdessen schreiben .

Ferdley
quelle
Danke. Ich habe versucht & mdash; und \ u2014, aber nicht das. Es funktionierte.
Alex Baranosky
4
Sie waren nah dran, in hexa & # x20ac; und in dezimalem Unicode & # 8364; Sie erhalten und Euro :)
user347594
Ja, aber was ist, wenn Sie ein UTF-32-Zeichen möchten, wie die Noten in der Symbola-Schriftart, die über 0x10000 liegen?
Ruud van Gaal
Danke für den Tipp. Dies funktionierte jedoch nur, wenn ich mein Unicode-Zeichen direkt in Text = "..." einfügte. Bei der Verwendung einer Bindung mit meinem ViewModel musste ich eine Zeichenfolgenvariable verwenden, die "\ u2014" enthielt.
Flocbit
9

In xaml habe ich es so gemacht:

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

Ich hoffe, hilfreich zu sein!

sdd
quelle
3

Aus der Microsoft-Dokumentation :

In Microsoft Visual Studio erstellte Markup-Dateien werden automatisch im Unicode UTF-8-Dateiformat gespeichert. Dies bedeutet, dass die meisten Sonderzeichen, z. B. Akzentzeichen, korrekt codiert werden. Es gibt jedoch eine Reihe häufig verwendeter Sonderzeichen, die unterschiedlich behandelt werden. Diese Sonderzeichen folgen dem XML-Standard des World Wide Web Consortium (W3C) für die Codierung.

Dies bedeutet, dass Sie Zalgo für alles tun können, was Sie interessieren

Geben Sie hier die Bildbeschreibung ein

Relevantes Codebit:

<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>
Matas Vaitkevicius
quelle
3

Ich bin aus einem anderen Grund auf diese Seite gekommen, aber dies beinhaltet nicht die einfachste und naheliegendste Lösung.

Das ist was ich mache.

Pflegen Sie eine statische Klasse mit allen Unicode-Werten.

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

Und binden Sie es dann einfach, wo immer Sie es brauchen.

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

Dies hilft Ihnen auch bei der Wartung. Alle Symbole befinden sich an einem Ort, den Sie verwalten müssen.

Imran Shaik
quelle
1

Speichern Sie die Datei als UTF-8. In Visual Studio können Sie dies tun, indem Sie auf "Datei" → "Erweiterte Speicheroptionen" klicken.

Akku
quelle