在WPF应用中使用天气图标字体

本文关键字:图标 字体 WPF 应用 | 更新日期: 2023-09-27 18:13:01

我不太熟悉特殊字符、unicode等。有一个非常好的项目:

天气图标字体,我想在我的应用程序中使用它,所以我下载了字体文件,将其添加到我的项目中,并在文本块中使用路径作为字体族

<TextBlock Text="'f002" FontFamily="Fonts/WeatherIconFont.ttf" />

但是我没有得到预期的项目,也当我试图使用'u0f002,所以它是可能使用字体正确的这个或以类似的方式,还是我应该去另一个?

非常感谢你的帮助和善意的答案提前!

编辑:

我确实犯了一个错误,在TextBlock中使用FontFamily,我把它改成:

<TextBlock Text="'f002" FontFamily="ms-appx:/Fonts/WeatherIconFont.ttf#Weather Icons" />

在WPF应用中使用天气图标字体

似乎这个问题从来没有明确的答案,所以我这样做了。下面的实现在我的WPF应用程序中为我工作。

通过下载包或Nuget将"天气图标"文件添加到应用程序后,执行以下操作。

第一步:添加资源到你的应用程序/用户控件

 <UserControl.Resources>
        <FontFamily x:Key="WeatherIcons">/fonts/weathericons-regular-webfont.ttf#Weather Icons</FontFamily>
 </UserControl.Resources>

步骤2:添加textblock控件所需的图标代码,并包括添加为FontFamily的资源。

<TextBlock Text="&#xf004;" FontFamily="{StaticResource WeatherIcons}" />

Update:如果你计划为这些十六进制代码使用绑定,你将需要下面的转换器。

public class StringToGlyphConverter : IValueConverter 
{
   public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
   {
      if (value.GetType() != typeof(string))
      {
          return null;
      }
      string glyph = (value as string).Substring(3, 4); // for example: &#xe11b; will become e11b
      return (char)int.Parse(glyph, NumberStyles.HexNumber);
   }
   public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
   {
      return null;
   }
}

就像'uf002,一切都如预期的那样工作!

非常感谢所有有趣和有帮助的评论!

如果你最终在这里寻找UWP (Windows 10)的解决方案,那么你应该使用以下命令:

  <TextBox Text="&#xf002;" FontFamily="ms-appx:///Assets/Fonts/WeatherIconFont.ttf#Weather Icons#Weather Icons" />