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

本文关键字:事件 触摸 处理 是否 Xamarin | 更新日期: 2023-09-27 17:58:27

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

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

为此,您可以使用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

其他手势还有"捏"answers"平移",点击的文档可以在这里找到。

在一个例子中,你要特别尝试这样的东西:

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