【发布时间】:2016-07-25 19:49:13
【问题描述】:
我正在使用 Xamarin Forms,我想在容器内添加三个具有三种不同颜色的标签,以便在按下容器时调用事件处理程序。
【问题讨论】:
-
developer.xamarin.com/guides/xamarin-forms/user-interface/… - 这里有很好的教程。它允许创建识别任何手势的容器。
标签: c# .net xamarin xamarin.forms
我正在使用 Xamarin Forms,我想在容器内添加三个具有三种不同颜色的标签,以便在按下容器时调用事件处理程序。
【问题讨论】:
标签: c# .net xamarin xamarin.forms
为此,您可以使用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。
其他手势为Pinch 和Pan,可以在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>
【讨论】:
<TapGestureRecognizer>添加一组不同颜色的标签,当我尝试这个时:<TapGestureRecognizer Tapped="handle"> <Label x:Name="myLabel" Text="Open Search" FontSize="30" TextColor="Blue" /> <Label x:Name="myLabel2" Text="URL" FontSize="30" TextColor="Green" /> </TapGestureRecognizer>我得到一个错误