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

Mis*_*s94 2 .net c# xamarin xamarin.forms

我正在使用 Xamarin Forms,我想在容器内添加三个具有三种不同颜色的标签,以便在按下容器时调用事件处理程序。

Ger*_*uis 5

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

您几乎可以将它们添加到任何视觉元素。看一下绑定到Image.

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

或者在 XAML 中:

<Image Source="tapped.jpg">
    <Image.GestureRecognizers>
        <TapGestureRecognizer
                Tapped="OnTapGestureRecognizerTapped"
                NumberOfTapsRequired="2" />
  </Image.GestureRecognizers>
</Image>
Run Code Online (Sandbox Code Playgroud)

如您所见,您还可以设置NumberOfTapsRequired以在执行操作之前启用它以进行更多点击。您也可以改用Commands

其他手势是捏合平移,可以在此处找到有关 Tap 的文档。

在您所要求的示例中,请专门尝试以下操作:

<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>
Run Code Online (Sandbox Code Playgroud)

这将处理整个组的手势。如果你想要它 per Label,请执行以下操作:

<Label x:Name="myLabel2" Text="URL" FontSize="30" TextColor="Green">
    <Label.GestureRecognizers>
        <TapGestureRecognizer Tapped="handle" />
    </Label.GestureRecognizers>
</Label> 
Run Code Online (Sandbox Code Playgroud)