在GridView的行中添加手势识别器

6
我有一个包含3列、每列都有2个按钮和1个标签的网格。我想为网格中的每一行添加一个点击手势。当用户在网格行上轻点时,我希望触发点击事件。有没有什么方法可以实现这个?
我希望尽可能保持我的布局简单。之前,我使用多个堆栈布局创建了相同的网格,并将手势添加到父堆栈布局。但为了提高性能,我想使用网格视图来完成此操作。

我刚意识到 ContentView.GestureRecognizers 不仅适用于 ContentView,而且也适用于其他 UI 元素,比如 Label,即 <Label.GestureRecognizers ...> 也可以使用!@hvaughan3 谢谢,我从你的答案中得到了灵感。 - NeverHopeless
1个回答

16

我建议添加一个ContentView(它不像StackLayout那样占用资源)。让它覆盖整行并将GestureRecognizer添加到其中,像这样:

<ContentView HorizontalOptions="FillAndExpand"
             VerticalOptions="FillAndExpand"
             Grid.Row="0"
             Grid.Column="0"
             Grid.ColumnSpan="3">
    <ContentView.GestureRecognizers>
        <TapGestureRecognizer Tapped="OnTapped"/>
    </ContentView.GestureRecognizers>
</ContentView>

那么我将需要3个内容视图,因为每行有3列,然后给它们都添加手势。这样会太长了。 - Akash Amin
@AkashAmin 嗯,您可以在代码后台或其他地方创建一个单独的 ContentView,并将其添加到XAML中3次,以便只需创建1个。 然后,如果所有的 GestureRecognizer 都完全相同,您还可以将 GestureRecognizer 附加到单个 ContentView 实例,并将该单个实例添加到三个不同的行。 无论如何,您都必须向所有三行添加一些内容,因为不能将 GestureRecognizer 单独附加到行。 - hvaughan3
2
谢谢你的帮助。我已经通过将内容视图放在网格行中并跨越我的列解决了这个问题。 - Akash Amin
@AkashAmin 很高兴能帮到你! - hvaughan3
可以简单地使用 BoxView - ToolmakerSteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接