【问题标题】:Add GestureRecognizer to row in gridview将 GestureRecognizer 添加到 gridview 中的行
【发布时间】:2023-03-05 17:26:01
【问题描述】:

我有一个网格,其中有 3 列包含 2 个按钮和 1 个标签。我想要的是为网格中的每一行添加一个 Tap 手势。我希望当用户点击网格行中的任意位置时触发 click 事件。有没有办法做到这一点?

我想让我的布局尽可能简单。在我使用多个堆栈布局创建相同的网格并向父堆栈布局添加手势之前。但为了提高性能,我想使用网格视图来做到这一点。

【问题讨论】:

  • 我刚刚意识到ContentView.GestureRecognizers 不仅适用于ContentView,而且也适用于其他UIElement,例如Label,即<Label.GestureRecognizers ...> 有效! @hvaughan3 谢谢,从你的回答中得到灵感。

标签: xamarin xamarin.forms


【解决方案1】:

我建议添加一个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 列,然后向所有这些列添加手势。那太长了。
  • @AkashAmin 好吧,您可以在代码后面或任何地方创建一个 ContentView,并将其添加到您的 XAML 中 3 次,这样只需要创建 1 个。然后,如果所有GestureRecognizers 完全相同,您还可以将GestureRecognizer 附加到单个ContentView 实例并将单个实例添加到三个不同的行。无论哪种方式,您都必须向所有三行添加一些内容,因为您不能将 GestureRecognizer 单独附加到一行。
  • 感谢您的帮助。我通过将内容视图放在网格行中并跨越我的列解决了这个问题。
  • @AkashAmin 很高兴它有帮助!
  • 可以简单地使用BoxView
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多