Как поместить символ юникода в XAML?


104

Я пытаюсь это сделать:

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

Чтобы получить - появиться перед текстом. Не работает. Что мне здесь делать?

Ответы:


196

Поскольку XAML - это формат файла XML, вы можете попробовать экранирование символа XML. Так что вместо того, чтобы писать &\u2014, вы могли бы писать &#x2014;.


Спасибо. Я пробовал & mdash; и \ u2014, но не то. Это сработало.
Alex Baranosky

4
Вы были близки, в гекса & # x20ac; а в десятичном юникоде & # 8364; получишь и евро :)
user347594 04

Да, но что, если вам нужен символ UTF-32, например музыкальные ноты в шрифте Symbola, размер которых превышает 0x10000?
Рууд ван Гал

Спасибо за подсказку. Однако это сработало для меня только тогда, когда я поместил свой символ Юникода непосредственно в Text = "...". При использовании привязки с моей ViewModel мне пришлось использовать строковую переменную, содержащую «\ u2014».
flocbit 07

9

В xaml я сделал так:

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

Надеюсь быть полезным!


3

Из документации Microsoft :

Файлы разметки, созданные в Microsoft Visual Studio, автоматически сохраняются в формате файлов Unicode UTF-8, что означает, что большинство специальных символов, таких как знаки ударения, кодируются правильно. Однако есть набор часто используемых специальных символов, которые обрабатываются иначе. Эти специальные символы соответствуют стандарту XML для кодирования консорциума World Wide Web Consortium (W3C).

Это означает, что вы можете делать zalgo все, что вам небезразлично

введите описание изображения здесь

Немного актуального кода:

<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

Я зашел на эту страницу по другой причине, но здесь нет самого простого и очевидного решения.

Вот что я делаю.

Поддерживайте статический класс со всеми значениями Unicode.

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

А потом просто привяжите его туда, где вам это нужно.

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

Это также поможет вам с обслуживанием, все значки будут в одном месте для управления.


1

Сохраните файл как UTF-8. В Visual Studio это можно сделать, выбрав «Файл» → «Дополнительные параметры сохранения».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.