枚举十六进制值到textbloc文本

时间:2017-05-23 14:13:25

标签: wpf font-awesome

我找到了一个FontAwesome库的大型枚举,我想在我的WPF应用程序中使用它来处理Textblocks中的图标/图像。枚举如下所示:

public enum Type
{
    ...
    //ExclamationCircle, 0xf06A
    ExclamationCircle = 0xf06A,
    //ExclamationTriangle, 0xf071
    ExclamationTriangle = 0xf071,
    //Expand, 0xf065
    Expand = 0xf065,
    ...
}

我想使用这个枚举来设置我的Textblock的值,所以我不必使用旁边的HEX值(例如0xf071)。在我的XAML中,我有以下工作方式:

<TextBlock x:Name="tbIcon" FontFamily="{StaticResource FontAwesome}" Text="&#xf071;" Foreground="{StaticResource RedBrush}" FontSize="20" VerticalAlignment="Center" Margin="10" />

binding image

当我添加以下代码时,我不再获取图像,而是获取我输入的实际文本。

 public DialogBase(string title, string message, Window owner)
 {
     InitializeComponent();
     tbIcon.Text = FontAwesome.Type.ExclamationTriangle.AsHexString();
 }

 public static string AsHexString(this FontAwesome.Type type)
 {
     return String.Format(@"\u{0}", ((int)type).ToString("X").ToLower());
     // This is returning "\uf071"
 }

incorrect image

从长远来看,我想让它成为一个新控件的公共属性,这样它就可以绑定了,但我想先让这个步骤工作。

1 个答案:

答案 0 :(得分:0)

尝试将更改为 x

public static string AsHexString(this FontAwesome.Type type)
{
    return String.Format(@"\x{0}", ((int)type).ToString("X").ToLower());
    // This is returning "\xf071"
}

您可能还想尝试像这样设置FontFamily

<TextBlock x:Name="tbIcon" TextElement.FontFamily="pack://application:,,,/FontAwesome.WPF;component/#FontAwesome" Foreground="{StaticResource RedBrush}" FontSize="20" VerticalAlignment="Center" Margin="10" />

它对我有用:)