Xamarin形成可点击图像

时间:2015-08-29 13:25:55

标签: image button xamarin.forms

我最初实现此功能,只是简单地将图像添加到按钮。然后我意识到我可以简单地为图像添加一个轻击手势(没有使用按钮)。任何建议哪种方式最好,为什么?感谢。

3 个答案:

答案 0 :(得分:6)

我使用自己的“OnClick”事件为Image :)和自定义控件:

    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}" /> 

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

<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>