是否有容器可以处理Xamarin中的触摸事件

时间:2016-07-25 10:44:25

标签: c# .net xamarin xamarin.forms

我使用的是Xamarin Forms,我想在容器中添加三种不同颜色的标签,所以当按下容器时,它会调用一个事件处理程序。

1 个答案:

答案 0 :(得分:4)

为此,您可以使用Gestures。 Xamarin.Forms中有几个默认识别器,包括TapGestureRecognizer

您可以将它们添加到几乎任何视觉元素中。看看绑定到Image的简单实现。

var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) => {
    // handle the tap
};
image.GestureRecognizers.Add(tapGestureRecognizer);

或者在XAML中:

<Image Source="tapped.jpg">
    <Image.GestureRecognizers>
        <TapGestureRecognizer
                Tapped="OnTapGestureRecognizerTapped"
                NumberOfTapsRequired="2" />
  </Image.GestureRecognizers>
</Image>

正如您所看到的,您还可以设置NumberOfTapsRequired以便在采取措施之前启用它以获得更多点按。 您也可以使用Commands

其他手势为PinchPan,有关Tap的文档可以找到here

在一个例子中,你要问的具体是这样:

<StackLayout>
    <StackLayout.GestureRecognizers>
        <TapGestureRecognizer Tapped="handle" />
    </StackLayout.GestureRecognizers>

    <Label x:Name="myLabel" Text="Open Search" FontSize="30" TextColor="Blue" />
    <Label x:Name="myLabel2" Text="URL" FontSize="30" TextColor="Green" /> 
</StackLayout>

这会处理整个组的手势。 如果您需要Label,请执行以下操作:

<Label x:Name="myLabel2" Text="URL" FontSize="30" TextColor="Green">
    <Label.GestureRecognizers>
        <TapGestureRecognizer Tapped="handle" />
    </Label.GestureRecognizers>
</Label>