Alex Baranosky
Alex Baranosky

Reputation: 50064

How to put a unicode character in XAML?

I'm trying to do this:

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

To get a — to appear in front of the text. It doesn't work. What should I be doing here?

Upvotes: 124

Views: 95973

Answers (6)

Glenn Slayden
Glenn Slayden

Reputation: 18749

The UTF-32 syntax in WPF/XAML is like so:   &#x000F1B0A;

<TextBlock Text="foo &#x000F1B0A; bar"
           FontFamily="Material Design Icons" />


enter image description here

This example is using the Material Design Icons desktop font (glyph dump here)

Upvotes: 0

Imran Shaik
Imran Shaik

Reputation: 326

I came to this page for some other reason, but this does not include the easiest and the obvious solution.

This is what I do.

Maintain a static class with all the Unicode values.

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

And then just bind it wherever you need it.

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

This also helps you out with maintenance, all icons would be in one place to manage.

Upvotes: 7

Akku
Akku

Reputation: 4454

Save the file as UTF-8. In Visual Studio, you can do this by going "File" → "Advanced Save Options".

Upvotes: 1

Matas Vaitkevicius
Matas Vaitkevicius

Reputation: 61361

From Microsoft documentation:

Markup files that are created in Microsoft Visual Studio are automatically saved in the Unicode UTF-8 file format, which means that most special characters, such as accent marks, are encoded correctly. However, there is a set of commonly-used special characters that are handled differently. These special characters follow the World Wide Web Consortium (W3C) XML standard for encoding.

What this means is that you can do zalgo for all you care

enter image description here

Bit of code that is relevant:

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

Upvotes: 3

sdd
sdd

Reputation: 721

In xaml I did it like this:

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

Hope to be helpful!

Upvotes: 11

ferdley
ferdley

Reputation: 2992

Since XAML is an XML file format you could try the XML character escape. So instead of writing &\u2014, you could write &#x2014; instead.

Upvotes: 244

Related Questions