Xamarin 形成可点击的图像

Xamarin Forms Clickable Images

我最初实现了此功能,但只是将图像添加到按钮。然后我意识到我可以简单地向图像添加点击手势(w/o 使用按钮)。有什么建议是最好的方法吗?为什么?谢谢。

这取决于你想要达到的视觉效果。

  • 如果您使用 Button,您将拥有点击动画(取决于平台)和特定的按钮边框。您对图像外观的控制要少得多(它位于按钮文本的左侧)。
  • 如果您使用普通的 TapGestureRecognizer,您将拥有一个可以完全控制纵横比 ratio/size 等的普通图像。

我使用自己的 "OnClick" 图像事件 :) 和自定义控件:

    public class MyImage : Xamarin.Forms.Image
{
    public static BindableProperty OnClickProperty =
        BindableProperty.Create("OnClick", typeof(Command), typeof(MyImage));

    public Command OnClick
    {
        get { return (Command)GetValue(OnClickProperty); }
        set { SetValue(OnClickProperty, value); }
    }

    public MyImage()
    {
        GestureRecognizers.Add(new TapGestureRecognizer() {Command = new Command(DisTap)});
    }

    private void DisTap(object sender)
    {
        if (OnClick != null)
        {
            OnClick.Execute(sender);
        }
    }

}

然后将它与 MVVM 一起使用,例如:

<local:MyImage Source="{Binding Img}" OnClick="{Binding ImgTapCommand}" /> 

你可以使用绝对布局,它可以用来将两个元素放在彼此之上,确保按钮是第二个元素。

<AbsoluteLayout>
            <Image Source="clock.png" AbsoluteLayout.LayoutBounds="0.2,0.2,35,35" AbsoluteLayout.LayoutFlags="PositionProportional"/>
            <Button AbsoluteLayout.LayoutBounds="0.2,0.2,35,35" AbsoluteLayout.LayoutFlags="PositionProportional" BorderColor="Transparent" BackgroundColor="Transparent" Command="{Binding AlertMeCommand}"/>
</AbsoluteLayout>