c# - 使用 Font Awesome 更改 WPF 中的字体图标

标签 c# wpf xaml fonts font-awesome

我正在使用 Font Awesome 的图标在我的 C# WPF 应用程序中呈现基本字体图像。在运行时,当我尝试更改 TextBlock 以显示不同的字体图标时,显示的是 unicode 表示而不是字体图标。

我已经创建了一个示例应用程序来显示它。单击任一按钮时,它会将 TextBlock 的 Text 属性替换为相应图标的 unicode。项目中有一个 Resources 文件夹,其中包含 FontAwesome.ttf字体文件作为 TextBlock 的 FontFamily 属性引用的构建资源。

这是我的示例应用程序的源代码:

代码隐藏:

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">&#xf000;</TextBlock>
    <TextBlock Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="18" FontFamily="../Resources/#FontAwesome">&#xf001;</TextBlock>
    <TextBlock Grid.Row="1" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="18" FontFamily="../Resources/#FontAwesome">&#xf002;</TextBlock>
    <TextBlock Name="tblkFontIcon" Grid.Row="2" Grid.ColumnSpan="3" FontSize="64" FontFamily="../Resources/#FontAwesome" HorizontalAlignment="Center" VerticalAlignment="Center">&#xf011;</TextBlock>
</Grid>

我使用以下教程将 Font Awesome 合并到我的应用程序中 http://www.codeproject.com/Tips/634540/Using-Font-Icons

所以本质上,我怎样才能更改图标但显示图标而不是 Unicode?

提前致谢。

最佳答案

Font Awesome 具有名为 FontAwesome.UWPFontAwesome.WPF 的 NuGet 包。只需下载其中一个即可。

NuGet Packages for Font Awesome

如果您将使用图标导入跟随命名空间到您的 XAML 代码中:

xmlns:fa="http://schemas.fontawesome.io/icons/"

像这样在你的按钮中使用它:

<Button x:Name="btnButton">
    <Button.Content>
        <fa:ImageAwesome Icon="LongArrowLeft"/>
    </Button.Content>
</Button>

最后在您的 C# 代码后面:

using FontAwesome.WPF; // on the top of the code
btnButton.Content = FontAwesomeIcon.LongArrowRight;

关于c# - 使用 Font Awesome 更改 WPF 中的字体图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23108181/

相关文章:

c# - 64 位数学如何在 32 位机器上完成?

c# - 如何从 Windows 服务运行控制台应用程序?

c# - WMI Process Watching 使用过多的 CPU!有什么更好的方法吗?

.net - 将代码注入(inject)正在运行的 WPF 应用程序的最佳方法

wpf - WrapPanel 将项目布置在一条长水平线(显示滚动条)中,而不是换行

c# - Windows Phone 8.1 文件选取器恢复问题

WPF 绑定(bind)样式到另一个控件的属性

c# - 带有 GDI+ 的 .NET 中的可滚动控件和区域

c# - 在 WPF ListView ItemTemplate 中查找子元素

wpf - 更改按钮图像问题