Como colocar um caractere Unicode em XAML?

104

Estou tentando fazer isso:

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

Para obter um - apareça na frente do texto. Não funciona. O que devo fazer aqui?

Alex Baranosky
fonte

Respostas:

196

Como XAML é um formato de arquivo XML, você pode tentar o escape de caractere XML. Então, em vez de escrever &\u2014, você pode escrever &#x2014;.

Ferdley
fonte
obrigado. Tentei & mdash; e \ u2014, mas não isso. Funcionou.
Alex Baranosky,
4
Você estava perto, em hexa & # x20ac; e em Unicode decimal & # 8364; você obterá e Euro :)
user347594
Sim, mas e se você quiser um caractere UTF-32, como as notas musicais na fonte Symbola que estão acima de 0x10000?
Ruud van Gaal
Obrigado pela dica. No entanto, isso só funcionou para mim quando coloquei meu caractere Unicode diretamente dentro de Text = "...". Ao usar um Binding com meu ViewModel, tive que usar uma variável de string contendo "\ u2014".
flocbit
9

No xaml eu fiz assim:

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

Espero ser útil!

sdd
fonte
3

Da documentação da Microsoft :

Os arquivos de marcação criados no Microsoft Visual Studio são salvos automaticamente no formato de arquivo Unicode UTF-8, o que significa que a maioria dos caracteres especiais, como acentos, são codificados corretamente. No entanto, há um conjunto de caracteres especiais comumente usados ​​que são tratados de forma diferente. Esses caracteres especiais seguem o padrão XML do World Wide Web Consortium (W3C) para codificação.

O que isso significa é que você pode fazer zalgo por todos os seus cuidados

insira a descrição da imagem aqui

Trecho de código relevante:

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

Vim para esta página por algum outro motivo, mas não inclui a solução mais fácil e óbvia.

Isto é o que eu faço.

Mantenha uma classe estática com todos os valores Unicode.

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

E então basta ligá-lo onde você precisar.

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

Isso também ajuda na manutenção, todos os ícones estariam em um só lugar para serem gerenciados.

Imran Shaik
fonte
1

Salve o arquivo como UTF-8. No Visual Studio, você pode fazer isso indo em "Arquivo" → "Opções avançadas de salvamento".

Akku
fonte