Загрузка FFImageLoading SVG в ImageButton Source из кода? - PullRequest
0 голосов
/ 17 января 2019

Эта запись показывает, как заставить SvgCachedImage действовать как кнопка. Однако, как загрузить SvgCachedImage в источник ImageButton XamarinForm?

Мой нерабочий код:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:SharedSvgSample"
             x:Class="SharedSvgSample.MainPage"
             xmlns:ffimageloadingsvg="clr-namespace:FFImageLoading.Svg.Forms;assembly=FFImageLoading.Svg.Forms">
    <StackLayout VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand">
        <ImageButton
            x:Name="myButton"
            HeightRequest="200"
            Clicked="myButton_Clicked"
            WidthRequest="200" />
    </StackLayout>
</ContentPage>

Код-за:

using FFImageLoading.Svg.Forms;
using System;
using Xamarin.Forms;

namespace SharedSvgSample
{
    public partial class MainPage : ContentPage
    {
        private bool _myButtonValue;
        private SvgImageSource _visibilityOn = null;
        private SvgImageSource _visibilityOff = null;

        public MainPage()
        {
            InitializeComponent();
            _visibilityOn = SvgImageSource.FromResource("SharedSvgSample.Resources.visibility_on.svg");
            _visibilityOn.VectorHeight = 100;
            _visibilityOn.VectorWidth = 100;

            _visibilityOff = SvgImageSource.FromResource("SharedSvgSample.Resources.visibility_off.svg");
            _visibilityOff.VectorHeight = 100;
            _visibilityOff.VectorWidth = 100;

            myButton.Source = _visibilityOff;   
        }

        private void myButton_Clicked(object sender, EventArgs e)
        {
            _myButtonValue = !_myButtonValue;
            myButton.Source = _myButtonValue ? _visibilityOn.ImageSource : _visibilityOff.ImageSource;
        }
    }
}

1 Ответ

0 голосов
/ 17 января 2019

К сожалению, Xamarin.Forms.Button поддерживает только FileImageSource, поэтому в данный момент вы не можете просто загрузить SVG в изображение кнопки.

Однако вы можете просто загрузить изображение SVG и добавить TapGestureRecognizer для имитации кнопки.

...