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

Alex Baranosky
źródło

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

ferdley
źródło
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!

sdd
źródło
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>
Matas Vaitkevicius
źródło
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.

Imran Shaik
źródło
1

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

Akku
źródło