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?

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


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!


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>

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.


1

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.