Modification de l'Icône de Police dans WPF utilisant la Police Impressionnant
Je suis rendant l'utilisation de la Police de Génial avec les icônes à rendre de police de base des images au sein de mon application WPF en C#. Au cours de l'exécution lorsque je tente de modifier le TextBlock pour afficher une autre icône de police, mais de la représentation unicode est affiché à la place de l'icône de police.
J'ai créé un exemple d'application pour afficher cette. Lorsque l'utilisateur clique sur les boutons, il remplace la propriété Text de TextBlock avec l'unicode pour l'icône correspondante. Il y a un dossier de Ressources dans le projet qui a le FontAwesome.ttf fichier de police comme une accumulation de Ressources qui le TextBlock est FontFamily références de propriété.
Voici mon exemple d'application du code source:
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>
J'ai utilisé le tutoriel suivant pour intégrer la Police Génial dans mon application http://www.codeproject.com/Tips/634540/Using-Font-Icons
Donc, en substance, comment puis-je changer l'Icône, mais avoir un affichage de l'Icône - de ne pas l'Unicode?
Merci d'avance.
OriginalL'auteur Gareth | 2014-04-16
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR
J'ai trouvé un autre post pour ce sujet --
Ajouter une Icône de la police dans wpf
Je pense que cela devrait être plus susceptibles à ce que vous voulez.
Vous avez juste besoin d':
TextBlock.Text
à l'icône que vous voulez et appliquer le style à la TextBlock.Si vous voulez changer l'icône par la mise à jour de la
TextBlock.Text
de la propriété, vous devez définir laText
propriété avec la pris en charge de chaîne unicode.Essayer quelque chose comme
plutôt que
Si vous êtes en utilisant le code de À L'Aide De Polices D'Icônes
alors vous avez probablement raté le "Comment Ça marche" de la section dans ce post.
Vous devriez utiliser cette extension de balisage, plutôt que d'utiliser le TextBlock.Texte de la propriété.
Dans son échantillon de code:
prêter attention à la
WpfTools:ImageFromFont
, c'est le Markup Extension, il permet à l'analyseur xaml pour convertir leà un
ImageSource
et affecté à laLargeImageSource
propriété.Dans votre xaml, vous pouvez remplacer l'
TextBlock
avec unImage
, alors il devrait être quelque chose comme:Si vous voulez changer l'Icône, vous devez changer le
ImageSource
vous-même, il suffit de suivre les À L'Aide De Polices D'Icônes pour créer votre propre méthode, ou tout simplement copier le code suivant à partir de ce tutoriel.Je pense que vous devriez définir le texte avec une chaîne unicode plutôt que de la définir par "".
J'ai mis à jour, et vous pourriez suivre ce code pour changer votre TextBlock.Texte à une autre chaîne unicode, et qui devrait fonctionner.
tblkFontIcon.Text = "\uf000"; Ouais, c'résolu! Mais pourquoi?
parce que "" est un xaml "version" unicode, l'analyseur xaml traduit dans la chaîne unicode qui est "\uf000" en c# et définir les
tblkFontIcon.Text
.OriginalL'auteur terry
Je sais que c'est une vieille question, mais la Police Impressionnant a un package NuGet nommé FontAwesome.UWP et FontAwesome.WPF. Il suffit de télécharger l'un de ce.
Si vous utilisez une icône importer suivre espace de noms dans votre code XAML:
L'utiliser dans votre bouton comme ceci:
Et enfin dans votre code C# derrière:
Malheureusement cela ne fonctionne pas pour la barre d'outils (barre d'outils?) les icônes
Pour la même XAML, j'ai dû utiliser le code suivant derrière:
(btnButton.Content as ImageAwesome).Icon = FontAwesomeIcon.LongArrowRight;
Merci, très utile étapes. Ce que tous les autres postes de gauche était: "Si vous allez utiliser une icône importer suivre espace de noms dans votre code XAML:". ou votre balisage ne serait pas construire/compiler.
Comment définissez-vous les sources d'image lors de l'utilisation de ce package?
OriginalL'auteur H. Pauwelyn
Simple et très facile:
Vous devez installer fontawesome de polices sur votre système, utilisez-la comme suit
Comment composer icône, {&#x}{FontAwesome icône code} e.g  pour le carnet d'adresses
Pour trouver la liste des codes goto FontAwesome ou l'astronaute web
OriginalL'auteur Kolajo