Jak umieścić znak Unicode w XAML?


104

Próbuję to zrobić:

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

Aby uzyskać -, aby pojawił się przed tekstem. To nie działa. Co mam tu robić?

Odpowiedzi:


196

Ponieważ XAML jest formatem pliku XML, możesz wypróbować ucieczkę znaków XML. Więc zamiast pisać &\u2014, możesz &#x2014;zamiast tego pisać .


Dziękuję Ci. Próbowałem & mdash; i \ u2014, ale nie to. Zadziałało.
Alex Baranosky

4
Byłeś blisko, w hexa & # x20ac; i w unicodzie dziesiętnym & # 8364; dostaniesz i euro :)
user347594

Tak, ale co, jeśli potrzebujesz znaku UTF-32, takiego jak nuty w czcionce Symbola, które są powyżej 0x10000?
Ruud van Gaal

Dzięki za podpowiedź. Jednak zadziałało to tylko wtedy, gdy umieściłem swój znak Unicode bezpośrednio w Text = "...". Podczas korzystania z Binding z moim ViewModelem musiałem użyć zmiennej łańcuchowej zawierającej „\ u2014”.
flocbit

9

W xaml zrobiłem to tak:

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

Mam nadzieję, że będę pomocny!


3

Z dokumentacji Microsoft :

Pliki znaczników tworzone w programie Microsoft Visual Studio są automatycznie zapisywane w formacie pliku Unicode UTF-8, co oznacza, że ​​większość znaków specjalnych, takich jak znaki akcentu, jest poprawnie zakodowana. Istnieje jednak zestaw powszechnie używanych znaków specjalnych, które są obsługiwane w inny sposób. Te znaki specjalne są zgodne ze standardem XML konsorcjum World Wide Web Consortium (W3C) do kodowania.

Oznacza to, że możesz robić zalgo na wszystko, na czym ci zależy

wprowadź opis obrazu tutaj

Odpowiedni fragment kodu:

<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

Przyszedłem na tę stronę z innego powodu, ale nie obejmuje to najłatwiejszego i oczywistego rozwiązania.

Tym się właśnie zajmuję.

Utrzymuj klasę statyczną ze wszystkimi wartościami Unicode.

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

A potem po prostu zwiąż go tam, gdzie go potrzebujesz.

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

Pomaga to również w konserwacji, wszystkie ikony byłyby w jednym miejscu do zarządzania.


1

Zapisz plik jako UTF-8. W programie Visual Studio można to zrobić, przechodząc do „Plik” → „Zaawansowane opcje zapisywania”.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.