Xamarin.Forms FontAwesome不适用于绑定属性

时间:2018-12-31 19:42:43

标签: c# font-awesome-5 xamarin.forms.listview

我想为我的Xamarin.Forms项目添加很棒的字体,并且我已经将其添加到项目中。 然后,我将FontFamily添加到这样的标签中:

<ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid Padding="15">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="9*" />
                            </Grid.ColumnDefinitions>
                            <Label Grid.Column="0" Text="&#xf11a;" FontSize="20">

                                <Label.FontFamily>
                                    <OnPlatform x:TypeArguments="x:String">
                                        <On Platform="iOS" Value="Font Awesome 5 Free" />
                                        <On Platform="Android" Value="fa-regular-400.ttf#Font Awesome 5 Free Regular" />
                                    </OnPlatform>
                                </Label.FontFamily>

                            </Label>
                            <Label Grid.Column="1" Text="{Binding Title}" FontSize="20"/>
                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>

此代码可以正常工作,这是结果enter image description here

但是当我将这种硬编码的东西更改为这样的可绑定属性时:

<Label Grid.Column="0" Text="{Binding FontAwesomeIconText}" FontSize="20">

并在c#中这样设置它

menuItems = new List<DrawerMenuItem>
            {
                new DrawerMenuItem {Id = MenuItemType.Browse, Title="Browse", FontAwesomeIconText = "&#xf11a;" },
                new DrawerMenuItem {Id = MenuItemType.About, Title="About" , FontAwesomeIconText = "&#xf11a;"}
            };

它坏了。我看到了它的代码

enter image description here

我还尝试在App.xaml文件中使用ResourcesDictionary

<OnPlatform x:TypeArguments="x:String" x:Key="FontAwesome">
            <On Platform="iOS" Value="Font Awesome 5 Free" />
            <On Platform="Android" Value="fa-regular-400.ttf#Font Awesome 5 Free Regular" />
        </OnPlatform>

得到相同的结果。 可能是什么问题?

1 个答案:

答案 0 :(得分:0)

我在这里https://forums.xamarin.com/discussion/30298/fontfamily-not-working-when-using-textproperty-binding找到了解决方法

它将&#xf11a;之类的字符串更改为\uf11a之类的unicode值,它对我有用。简单明了

p.s。祝大家新年快乐! :)