1

我正在尝试使用 icon-lightbulb ()作为实体输出 FontAwesome Icons。如果我将其硬编码为,它工作正常,Text=""但是当我将此字符串存储在ObservableCollection用于绑定中时,我只会收到一个以开头的字符串xf..

问题也发生在&which 不转换为&.

我尝试使用本文中的建议- 它适用于&FontAwesome 图标,但不适用于该图标。

有谁知道需要做些什么来实现这一目标?

执行:

我已将 FontAwesome 字体安装到我的系统上,然后将其嵌入到我的 Visual Studio 解决方案中以供使用。

我正在使用 TextBlock 将其绑定到ObservableCollection

<TextBlock FontFamily="/OceanView;component/Resources/Fonts/#FontAwesome" FontSize="18px" HorizontalAlignment="Left" Text="{Binding Path=Image}" VerticalAlignment="Center" Foreground="#FF4A8BC2" />

然后我添加到集合中

NavigationInit.Navigations.Add(new Navigation { Name = "IMAGES", Image = "&#xf187;" });
4

3 回答 3

4

XML 实体对应于 Unicode 代码点 f187,即十进制的 61831。因此,您可以只使用 System.Char.ConvertFromUTF32 创建一个字符串,其中包含具有此代码点的字符。

在代码中:

NavigationInit.Navigations.Add(new Navigation { Name = "IMAGES", Image = System.Char.ConvertFromUtf32(61831) });
于 2013-07-01T18:29:47.527 回答
0

还有另一种方法可以将此代码转换为 int 然后字符。我在转换器中使用它。这个对我有用。

   Navigations.Add(new Navigation { Name = "IMAGES", Image = (char)((int)0xf187) });
于 2016-02-15T12:28:45.870 回答
0

发布的答案实际上都不是在 C# 中处理此问题的正确方法。XAML 中的语法Text="&#xf0eb;"只是一种对具有 code point 的字符进行编码的方法0xf0eb。C# 也有字符文字,它只是使用不同的语法:

NavigationInit.Navigations.Add(new Navigation { Name = "IMAGES", Image = "\uf0eb" });

请注意,上面使用了问题文本中描述的字符。实际的代码示例使用不同的示例。其语法将完全相同,只是具有不同的值:

NavigationInit.Navigations.Add(new Navigation { Name = "IMAGES", Image = "\uf187" });

这比在运行时调用方法要好得多ConvertFromUtf32()(编译器解释字符值,因此编译的字符串已经是需要的了),或者在intchar真正想要的是第一名。

于 2016-10-26T03:38:46.483 回答