FontAwesome / Xamarin - Настройка Glyph не работает из кода позади - PullRequest
0 голосов
/ 16 апреля 2020

Я что-то здесь упустил при использовании FontAwesome на Xamarin ... кнопки работают нормально при настройке из файла xaml, но когда я пытаюсь установить из кода позади, значок не отображается, вот сценарий:

кнопка работает отлично:

<Button Grid.Row="0" Grid.Column="4" x:Name="btnIdDav" Padding="10" Margin="3" TextColor="#FFF" BackgroundColor="#565C5A" Clicked="btnIdDav_Clicked" WidthRequest="45">
   <Button.ImageSource>
      <FontImageSource FontFamily="{StaticResource FontAwesomeSolidOTF}" Glyph="&#xf039;" Color="#fff"/>
   </Button.ImageSource>
</Button>

В прошлый раз, когда мне нужно было установить Glyph из кода, мне пришлось сделать плохой обходной путь с конвертером, чтобы показать его, и это работал (значок отображается) в конце:

public const string _dollarGlyph = "\uf155";
public const string _percGlyph = "\uf541";
 public class DescGlyphConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
Glyph="{Binding DescImage, Converter={StaticResource Key=desconto}}

СЕЙЧАС Я хочу создать пользовательскую кнопку и установить глиф, но значок не появляется (протестировано с файлами OTF и TTF):

public static FontImageSource GetImgSource()
        {
            FontImageSource source = new FontImageSource();
            source.FontFamily = Application.Current.Resources["FontAwesomeSolidTTF"].ToString();
            source.Glyph = "\uf3e5";
            source.Color = Color.FromHex("#fff");
            return source;
        }

        public static Style BtnBack() {
            return new Style(typeof(Button))
            {
                Setters = {
                    new Setter { Property = Button.ContentLayoutProperty, Value = new ButtonContentLayout(ButtonContentLayout.ImagePosition.Top, 5) },
                    new Setter { Property = Button.TextProperty, Value = "Back" },
                    new Setter { Property = Button.ImageSourceProperty, Value = GetImgSource()},
                }
            };
        }

Есть предложения? Спасибо!

...