Android 如何在堆栈布局或框架中添加单击事件
我是xamarin.forms的新手。请帮助我如何在堆栈布局或框架中添加单击事件Android 如何在堆栈布局或框架中添加单击事件,android,ios,xaml,xamarin,xamarin.forms,Android,Ios,Xaml,Xamarin,Xamarin.forms,我是xamarin.forms的新手。请帮助我如何在堆栈布局或框架中添加单击事件 <Frame Grid.Column="0" BackgroundColor="#ffffff" Grid.Row="0" HasShadow="true" OutlineColor = "Black"> </Frame> <StackLayout Grid.Column="0" BackgroundColor="#313FA0" Grid.Row="0"> </Sta
<Frame Grid.Column="0" BackgroundColor="#ffffff" Grid.Row="0" HasShadow="true" OutlineColor = "Black">
</Frame>
<StackLayout Grid.Column="0" BackgroundColor="#313FA0" Grid.Row="0">
</StackLayout>
您可以在XAML中将TapGestureRecognitor添加到StackLayout中,如下所示:
<StackLayout Grid.Column="0" Grid.Row="0" BackgroundColor="#313FA0">
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapped"/>
</StackLayout.GestureRecognizers>
</StackLayout>
<StackLayout Grid.Column="0" Grid.Row="0" BackgroundColor="#313FA0">
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{Binding TapCommand}"/>
</StackLayout.GestureRecognizers>
</StackLayout>
或者,如果您正在使用MVVM模式,并且希望将点击绑定到ViewModel中的ICommand,则可以通过以下方式实现:
<StackLayout Grid.Column="0" Grid.Row="0" BackgroundColor="#313FA0">
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapped"/>
</StackLayout.GestureRecognizers>
</StackLayout>
<StackLayout Grid.Column="0" Grid.Row="0" BackgroundColor="#313FA0">
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{Binding TapCommand}"/>
</StackLayout.GestureRecognizers>
</StackLayout>
Xamarin网站上有一些非常好的指南:
好吧,谢谢pnavk,根据我所看到的,请允许我也分享一下,没有内置OnClick或Click事件的视图(布局、框架、图像等)具有处理Click事件的相同方法 如下所示:
<Image>
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="onImageCitizenReporterTapped" NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
<Frame>
<Frame.GestureRecognizers>
<TapGestureRecognizer Tapped="onFrameCitizenReporterTapped" NumberOfTapsRequired="1" />
</Frame.GestureRecognizers>
</Frame>
<StackLayout>
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="onStackCitizenReporterTapped" NumberOfTapsRequired="1" />
</StackLayout.GestureRecognizers>
</StackLayout >
对于图像:
<Image>
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="onImageCitizenReporterTapped" NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
<Frame>
<Frame.GestureRecognizers>
<TapGestureRecognizer Tapped="onFrameCitizenReporterTapped" NumberOfTapsRequired="1" />
</Frame.GestureRecognizers>
</Frame>
<StackLayout>
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="onStackCitizenReporterTapped" NumberOfTapsRequired="1" />
</StackLayout.GestureRecognizers>
</StackLayout >
对于帧:
<Image>
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="onImageCitizenReporterTapped" NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
<Frame>
<Frame.GestureRecognizers>
<TapGestureRecognizer Tapped="onFrameCitizenReporterTapped" NumberOfTapsRequired="1" />
</Frame.GestureRecognizers>
</Frame>
<StackLayout>
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="onStackCitizenReporterTapped" NumberOfTapsRequired="1" />
</StackLayout.GestureRecognizers>
</StackLayout >
对于堆栈布局:
<Image>
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="onImageCitizenReporterTapped" NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
<Frame>
<Frame.GestureRecognizers>
<TapGestureRecognizer Tapped="onFrameCitizenReporterTapped" NumberOfTapsRequired="1" />
</Frame.GestureRecognizers>
</Frame>
<StackLayout>
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="onStackCitizenReporterTapped" NumberOfTapsRequired="1" />
</StackLayout.GestureRecognizers>
</StackLayout >
干杯。衷心感谢Xamarin认证开发者Udara Alvis这款解决方案是最好的,因为它实现了两个目标:精确的图像和文本定位以及点击事件,当按钮非常大时,没有点击手势,也没有糟糕的内容布局 代码示例:
<Grid HorizontalOptions="Fill" IsClippedToBounds="True" VerticalOptions="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- Button Control -->
<Button Grid.ColumnSpan="3" BackgroundColor="{StaticResource AppMainColor}" Clicked="GoToLoginPage" CornerRadius="20"/>
<StackLayout InputTransparent="True" Grid.Column="1" Orientation="Horizontal" Spacing="10">
<!-- Text Label -->
<Label Text="Se déconnecter" FontFamily="Roboto-Regular" FontSize="20" TextColor="White"
HorizontalOptions="Start" HorizontalTextAlignment="Center" VerticalOptions="Center" VerticalTextAlignment="Center" />
<!-- Icon Image -->
<Image HorizontalOptions="End" Source="log_out.png" VerticalOptions="Center"/>
</StackLayout>
</Grid>
如何在自定义渲染中执行此操作