Как поместить символ юникода в 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>

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

SDD
источник
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 это можно сделать, выбрав «Файл» → «Дополнительные параметры сохранения».

Акку
источник