【问题标题】:Is there a container that can handle touch events in Xamarin是否有可以在 Xamarin 中处理触摸事件的容器
【发布时间】:2016-07-25 19:49:13
【问题描述】:

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

【问题讨论】:

标签: c# .net xamarin xamarin.forms


【解决方案1】:

为此,您可以使用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,可以在here 找到关于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>

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

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

【讨论】:

  • 你能告诉我如何使用&lt;TapGestureRecognizer&gt;添加一组不同颜色的标签,当我尝试这个时:&lt;TapGestureRecognizer Tapped="handle"&gt; &lt;Label x:Name="myLabel" Text="Open Search" FontSize="30" TextColor="Blue" /&gt; &lt;Label x:Name="myLabel2" Text="URL" FontSize="30" TextColor="Green" /&gt; &lt;/TapGestureRecognizer&gt;我得到一个错误
猜你喜欢
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
相关资源
最近更新 更多