Solución:
Font Awesome tiene paquetes NuGet llamados FontAwesome.UWP y FontAwesome.WPF. Solo descarga uno de estos.
Si va a utilizar una importación de icono, siga el espacio de nombres en su código XAML:
xmlns:fa="http://schemas.fontawesome.io/icons/"
Úselo en su botón de esta manera:
<Button x:Name="btnButton">
<Button.Content>
<fa:ImageAwesome Icon="LongArrowLeft"/>
</Button.Content>
</Button>
Y finalmente en su código C # detrás:
using FontAwesome.WPF; // on the top of the code
btnButton.Content = FontAwesomeIcon.LongArrowRight;
ACTUALIZAR
Encontré una publicación diferente para este tema: Agregar fuente de ícono en wpf Creo que esto debería ser más probable que lo que desea.
Asegúrese de que su fuente se agregue como recurso. Luego, usa la siguiente cadena:
<Setter Property="TextElement.FontFamily" Value="pack://application:,,,/fonts/#FontAwesome" />
En la cadena de arriba, supongo que el nombre de la fuente (no el nombre de archivo de la fuente) es FontAwesome.
Solo necesitas:
- Agregue la fuente a su proyecto, digamos que las coloca en una carpeta “fuentes”
- Cambie la acción de compilación a Recurso no Recurso incrustado
- Agregue su estilo para configurar la familia de fuentes como el fragmento de código anterior y configure el
TextBlock.Text
al icono que desee y aplique el estilo al TextBlock.
Si desea cambiar el icono actualizando el TextBlock.Text
propiedad, debe establecer la Text
propiedad con la cadena Unicode admitida.
Prueba algo como
tblkFontIcon.Text = "uf000";
en vez de
tblkFontIcon.Text = "";
Si está utilizando el código de Uso de iconos de fuentes
entonces probablemente te perdiste la sección “Cómo funciona” en esa publicación. Debe usar esa extensión de marcado, en lugar de usar la propiedad TextBlock.Text.
En su código de muestra:
<RibbonButton Label="Import data"
LargeImageSource="{WpfTools:ImageFromFont Text=,
FontFamily=/RibbonFontIconSample;component/Resources/#FontAwesome, Brush=Brown}" />
presta atención a WpfTools:ImageFromFont
, es la extensión de marcado, permite que el analizador xaml convierta el
{WpfTools:ImageFromFont Text=,
FontFamily=/RibbonFontIconSample;component/Resources/#FontAwesome, Brush=Brown}
a una ImageSource
y asignado a la LargeImageSource
propiedad.
Entonces, en su xaml, podría reemplazar el TextBlock
con un Image
, entonces debería ser algo como:
<Image Source="{WpfTools:ImageFromFont Text=,
FontFamily=/RibbonFontIconSample;component/Resources/#FontAwesome, Brush=Brown}" />
Si desea cambiar el icono, deberá cambiar el ImageSource
usted mismo, simplemente siga el uso de iconos de fuentes para crear su propio método, o simplemente copie el siguiente código de ese tutorial.
private static ImageSource CreateGlyph(string text,
FontFamily fontFamily, FontStyle fontStyle, FontWeight fontWeight,
FontStretch fontStretch, Brush foreBrush)
{
if (fontFamily != null && !String.IsNullOrEmpty(text))
{
Typeface typeface = new Typeface(fontFamily, fontStyle, fontWeight, fontStretch);
GlyphTypeface glyphTypeface;
if (!typeface.TryGetGlyphTypeface(out glyphTypeface))
throw new InvalidOperationException("No glyphtypeface found");
ushort[] glyphIndexes = new ushort[text.Length];
double[] advanceWidths = new double[text.Length];
for (int n = 0; n < text.Length; n++)
{
ushort glyphIndex = glyphTypeface.CharacterToGlyphMap[text[n]];
glyphIndexes[n] = glyphIndex;
double width = glyphTypeface.AdvanceWidths[glyphIndex] * 1.0;
advanceWidths[n] = width;
}
GlyphRun gr = new GlyphRun(glyphTypeface, 0, false, 1.0, glyphIndexes,
new Point(0, 0), advanceWidths,
null, null, null, null, null, null);
GlyphRunDrawing glyphRunDrawing = new GlyphRunDrawing(foreBrush, gr);
return new DrawingImage(glyphRunDrawing);
}
return null;
}