在WPF应用程序中使用Weather Icon字体

时间:2015-09-16 22:49:38

标签: c# xaml unicode

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

The Weather Icon Font我希望在我的应用程序中使用它,所以我下载了字体文件,将其添加到我的项目中并在文本块中使用路径作为字体系列

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

但是当我尝试使用 \ u0f002 &amp; #xf002 时,我没有得到预期的项目,所以可以使用这个字体吗或以类似的方式或我应该去另一个?

非常感谢您提前提供的所有有用且意义重大的答案!

修改

确实我在TextBlock中使用FontFamily时犯了一个错误,我将其更改为:

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

但我还是没有得到预期的项目。

3 个答案:

答案 0 :(得分:1)

似乎从来没有清楚地回答过这个问题,所以这就是我所做的。 以下实现在WPF应用程序中对我有用。

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

步骤1:将资源添加到您的应用程序/用户控件中。

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

步骤2:使用所需的所需图标代码添加文本块控件,并包含作为FontFamily添加的资源。

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

更新:如果您打算对这些十六进制代码使用绑定,则需要以下转换器。

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;
   }
}

答案 1 :(得分:0)

它就像 \ uf002 一样,一切正常运作!

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

答案 2 :(得分:0)

如果您最终在这里搜索UWP(Windows 10)的解决方案,那么您应该使用以下内容:

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