我正在尝试使用icon-lightbulb ()
输出FontAwesome图标作为权利。如果我将其硬编码为Text=""
,但是当我将此字符串存储在ObservableCollection
内以进行绑定时,我只收到一个以xf..
开头的字符串
问题也发生在&
,但未转换为&
。
我已尝试使用建议的in this article - 它适用于&
但不适用于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" />
然后我添加到Collection
NavigationInit.Navigations.Add(new Navigation { Name = "IMAGES", Image = "" });
答案 0 :(得分:4)
XML实体对应于Unicode代码点f187,即十进制的61831。因此,您可以使用System.Char.ConvertFromUTF32创建一个包含具有此代码点的字符的String。
在代码中:
NavigationInit.Navigations.Add(new Navigation { Name = "IMAGES", Image = System.Char.ConvertFromUtf32(61831) });
答案 1 :(得分:0)
还有另一种方法可以将此代码转换为int然后转换为字符。我在转换器中使用它。它对我有用。
Navigations.Add(new Navigation { Name = "IMAGES", Image = (char)((int)0xf187) });
答案 2 :(得分:0)
这两个发布的答案实际上都不是在C#中处理此问题的正确方法。 XAML中的语法Text=""
只是一种编码具有代码点0xf0eb
的字符的方法。 C#也有字符文字,它只使用不同的语法:
NavigationInit.Navigations.Add(new Navigation { Name = "IMAGES", Image = "\uf0eb" });
请注意,上面使用了问题文本中描述的字符。实际的代码示例使用不同的代码示例。它的语法完全相同,只是使用不同的值:
NavigationInit.Navigations.Add(new Navigation { Name = "IMAGES", Image = "\uf187" });
这比在运行时调用ConvertFromUtf32()
方法要好得多(编译器解释字符值,因此已编译的字符串已经是必需的),或者将值转换为{{1 }}和int
当你真正想要的是一个字符串时。