¿Cómo poner un carácter unicode en XAML?

104

Estoy tratando de hacer esto:

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

Para que aparezca un - delante del texto. No funciona. ¿Qué debería estar haciendo aquí?

Alex Baranosky
fuente

Respuestas:

196

Dado que XAML es un formato de archivo XML, puede probar el escape de caracteres XML. Entonces, en lugar de escribir &\u2014, podrías escribir &#x2014;.

Ferdley
fuente
gracias. Intenté & mdash; y \ u2014, pero no eso. Funcionó.
Alex Baranosky
4
Estabas cerca, en hexa & # x20ac; y en decimal Unicode & # 8364; obtendrá y Euro :)
user347594
Sí, pero ¿qué pasa si desea un carácter UTF-32, como las notas musicales en la fuente Symbola que están por encima de 0x10000?
Ruud van Gaal
Gracias por la pista. Sin embargo, esto solo funcionó para mí cuando puse mi carácter Unicode directamente dentro de Text = "...". Al usar un enlace con mi ViewModel, tuve que usar una variable de cadena que contenga "\ u2014".
flocbit
9

En xaml lo hice así:

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

De la documentación de Microsoft :

Los archivos de marcado que se crean en Microsoft Visual Studio se guardan automáticamente en el formato de archivo Unicode UTF-8, lo que significa que la mayoría de los caracteres especiales, como las marcas de acento, se codifican correctamente. Sin embargo, existe un conjunto de caracteres especiales de uso común que se manejan de manera diferente. Estos caracteres especiales siguen el estándar XML del World Wide Web Consortium (W3C) para la codificación.

Lo que esto significa es que puedes hacer zalgo por todo lo que te importa

ingrese la descripción de la imagen aquí

Bit de código que es 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
fuente
3

Vine a esta página por alguna otra razón, pero esta no incluye la solución más fácil y obvia.

Esto es lo que hago.

Mantenga una clase estática con todos los valores Unicode.

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

Y luego agréguelo donde lo necesite.

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

Esto también lo ayuda con el mantenimiento, todos los íconos estarán en un solo lugar para administrar.

Imran Shaik
fuente
1

Guarde el archivo como UTF-8. En Visual Studio, puede hacer esto yendo a "Archivo" → "Opciones avanzadas de guardado".

Akku
fuente