嗨,我如何在查看按钮中扩展自定义解决方案?

我不会扩展这个:

....

 <Button BackgroundColor="#388fee" BorderColor="#388fee" BorderRadius="25" WidthRequest="50" HeightRequest="50"
                Command="{Binding CheckinShareCommand}" Margin="0,16">
            <Button.Image>
                <FileImageSource File="googlemap_view_share_button.png" />
            </Button.Image>
        </Button>

....

这是我的自定义解决方案。

当您按下图像时,它会放大

公共(public)类CustomImage:图像
{
公共(public)静态只读BindableProperty CommandProperty = BindableProperty.Create(p => p.Command,null);
公共(public)ICommand命令
{
get {return(ICommand)GetValue(CommandProperty); }
设置{SetValue(CommandProperty,value); }
}
    public static readonly BindableProperty CommandParameterProperty = BindableProperty.Create<CustomImage, object>(p => p.CommandParameter, null);
    public object CommandParameter
    {
        get { return (object)GetValue(CommandParameterProperty); }
        set { SetValue(CommandParameterProperty, value); }
    }

    private ICommand TransitionCommand
    {
        get
        {
            return new Command(async () =>
            {
                this.AnchorX = 0.48;
                this.AnchorY = 0.48;
                await this.ScaleTo(2.8, 50, Easing.Linear);
                await Task.Delay(100);
                await this.ScaleTo(1, 50, Easing.Linear);
                if (Command != null)
                {
                    Command.Execute(CommandParameter);
                }
            });
        }
    }

    public CustomImage()
    {
        Initialize();
    }


    public void Initialize()
    {
        GestureRecognizers.Add(new TapGestureRecognizer()
        {
            Command = TransitionCommand
        });

....

最佳答案

如果您想在按下图像时放大图像,请尝试以下代码:

public class CustomButton : Button
{
    public CustomButton() : base()
    {
        const int _animationTime = 10;
        Clicked += async (sender, e) =>
        {
            try
            {
                var btn = (CustomButton)sender;
                await btn.ScaleTo(1.2, _animationTime);
                await btn.ScaleTo(1, _animationTime);
            }
            catch (Exception ex)
            {
                ex.Track();
            }
        };

    }
}

Xaml
<userControls:CustomButton BackgroundColor="#388fee" BorderColor="#388fee" BorderRadius="25" WidthRequest="50" HeightRequest="50"
                Command="{Binding CheckinShareCommand}" Margin="0,16">
            <Button.Image>
                <FileImageSource File="googlemap_view_share_button.png" />
            </Button.Image>
        </userControls:CustomButton>

不要忘记将这一行放在标题
xmlns:userControls="clr-namespace:YourNameSpace.UserControls"

10-07 19:47