c# - 使用 Binding 时出现 FontImageSource Glyph 问题

标签 c# xamarin.forms fonts glyph material-design-icons

使用 Xamarin Forms 5 和 Visual Studio 2022。

我已将 materialdesignicons-webfont.ttf 添加到 PCL 项目的 Fonts 文件夹中,并将其标记为嵌入资源。

我在 AssemblyInfo.cs 文件中添加了以下内容:

[assembly: ExportFont("materialdesignicons-webfont.ttf", Alias = "mdi")]

以下 XAML 工作正常:

<Image x:DataType="models:IPageResourceProvider"
        BackgroundColor="Transparent"
        IsVisible="{Binding IconType, Converter={StaticResource IconTypeConverter}, ConverterParameter={x:Static enums:IconType.MaterialDesignIcon}}">
    <Image.Source>
        <FontImageSource Glyph="&#xF0B55;"
                          FontFamily="mdi"
                          Size="32"
                          Color="Black" />
    </Image.Source>
</Image>

但是我想绑定(bind)字形,但是下面只显示 5 作为图像(unicode 的最后一个字符):

<Image x:DataType="models:IPageResourceProvider"
        BackgroundColor="Transparent"
        IsVisible="{Binding IconType, Converter={StaticResource IconTypeConverter}, ConverterParameter={x:Static enums:IconType.MaterialDesignIcon}}">
    <Image.Source>
        <FontImageSource Glyph="{Binding IconName}"
                          FontFamily="mdi"
                          Size="32"
                          Color="Black" />
    </Image.Source>
</Image>

接口(interface) IPageResourceProvider 具有以下属性:

string IconName {get; }

实现返回:

string IconName => "\uF0B55";

我不知道我做错了什么,欢迎任何想法。

最佳答案

C# 中使用 4 个字节表示 UTF-32 字形。

字形 U+10FFFDC# 示例。请注意大写的U:

public string IconName => "\U0010FFFD";

另请参阅有关四位和八位 Unicode 转义码的注释 here .

XAML 中字形 U+10FFFD 的示例:

Glyph="&#x10FFFD;"

关于c# - 使用 Binding 时出现 FontImageSource Glyph 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74107690/

相关文章:

c# - linq2db.MySql - 无法找到源类型的查询模式的实现。未找到的地方

c# - 多线程应用程序中第 4 个 HttpWebRequest 异常超时

ios - 降低 'Deployment Target' 以查看较旧的模拟器或在更新后检查您的 Apple SDK 路径警告

c# - Xamarin 表格 : Check if user inactive after some time log out app

c# - 具有可绑定(bind)属性的自定义 View 未在 Xamarin.Forms SAP 上正确绑定(bind)

google-chrome - 使用 'preload' 链接指令在 Chrome 中预加载字体

c# - 正则表达式从字符串中删除所有空格、句点和其他非单词字符

java - 更改 JOptionPane 中 JTextArea 的字体

ios - 如何在 iphone 应用程序的 xcode 中导入字体

java - 从 Android 应用程序调用我的 Web 服务的端口耗尽