I am making use of Font Awesome's icons to render basic font images within my C# WPF application. During run-time when I attempt to alter the TextBlock to display a different font icon but the unicode representation is displayed instead of the font icon.
I have created a sample application to display this. When either of the buttons are clicked, it replaces the TextBlock's Text property with the unicode for the respective icon. There is a Resources folder in the project which has the FontAwesome.ttf font file as a Build Resource which the The TextBlock's FontFamily property references.
Here's my sample application's source code:
Code-Behind:
namespace FontAwesomeTest
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btnGlass_Click(object sender, RoutedEventArgs e)
{
tblkFontIcon.Text = "";
}
private void btnMusic_Click(object sender, RoutedEventArgs e)
{
tblkFontIcon.Text = "";
}
private void btnSearch_Click(object sender, RoutedEventArgs e)
{
tblkFontIcon.Text = "";
}
}
}
XAML:
<Window x:Class="FontAwesomeTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Font Awesome Test Window" Height="300" Width="330" Name="FontAwesomeTestWindow">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="25"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button Name="btnGlass" Height="35" Width="85" Click="btnGlass_Click" >Glass</Button>
<Button Name="btnMusic" Grid.Column="1" Height="35" Width="85" Click="btnMusic_Click">Music</Button>
<Button Name="btnSearch" Grid.Column="2" Width="85" Height="35" Click="btnSearch_Click">Search</Button>
<TextBlock Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="18" FontFamily="../Resources/#FontAwesome"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="18" FontFamily="../Resources/#FontAwesome"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="18" FontFamily="../Resources/#FontAwesome"></TextBlock>
<TextBlock Name="tblkFontIcon" Grid.Row="2" Grid.ColumnSpan="3" FontSize="64" FontFamily="../Resources/#FontAwesome" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
</Grid>
I used the following tutorial to incorporate Font Awesome into my application http://www.codeproject.com/Tips/634540/Using-Font-Icons
So in essence, how can I change the Icon but have an Icon display - not Unicode?
Thanks in advance.
UPDATE
I found a different post for this topic -- Add Icon font in wpf I think this should be more likely to what you want.
You just need to:
TextBlock.Text
to the icon you like and apply the style to the TextBlock.If you want change the icon by updating the
TextBlock.Text
property, you should set theText
property with the supported unicode string.Try something like
rather than
If your're using the code from Using Font Icons
then you probably missed the "How It Works" section in that post. You should use that markup extension, rather than using the TextBlock.Text property.
In his sample code:
pay attention to the
WpfTools:ImageFromFont
, it is the Markup Extention, it allows xaml parser to convert theto an
ImageSource
and assigned to theLargeImageSource
property.So in your xaml, you could replace the
TextBlock
with anImage
, then it should be something like:If you want to change the Icon, you will have to change the
ImageSource
yourself, just follow the Using Font Icons to create your own method, or simply copy the following code from that tutorial.Simple and very easy:
You should install fontawesome font on your system use it as follows
How to compose icon, {&#x}{FontAwesome icon code} e.g  for address book
To find the list of codes goto FontAwesome or astronaut web
I know this is an old question but Font Awesome has a NuGet package named FontAwesome.UWP and FontAwesome.WPF. Just download one of this.
If you will use a icon import follow namespace into your XAML code:
Use it into your button like this:
And finally in your C# code behind: