2016-05-24 7 views
4

2つのボタンと1つのラベルを含む3つの列があるグリッドがあります。私が望むのは、グリッドの各行にタップジェスチャーを追加することです。ユーザーがグリッド行のどこかをタップすると、クリックイベントが発生します。これを行う方法はありますか?グリッドビューの行にGestureRecognizerを追加します

できるだけシンプルなレイアウトにしたい。以前は、複数のスタックレイアウトを使用して同じグリッドを作成し、親スタックレイアウトにジェスチャを追加していました。しかし、パフォーマンスのために私はグリッドビューを使用してこれを実行したい。

+0

私はちょうど 'ContentView.GestureRecognizers'は' ContentView'のためだけ適用されていませんが、また 'Label'すなわち、' '作品のような他のUIElementに適用可能であることを実現! @ hvaughan3ありがとう、あなたの答えからアイデアを取った。 – NeverHopeless

答えて

1

私は行全体をカバーするために、各行でそれにコンテンツビューとジェスチャーを追加し、私の列全体に及ぶことによってこれを解決しています、その行のどこかをタップすると、各行のタップ・イベントがトリガーされます。

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

ContentView(これはStackLayoutと同じくらい集中していません)を追加することをお勧めします。それが行全体をカバー作り、そのように、それにGestureRecognizerを追加します。

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

次に、1行に3列あり、すべてにジェスチャを追加するので、3つのコンテンツビューが必要になります。それは長すぎるでしょう。 –

+0

@AkashAminあなたのコード内に1つの 'ContentView'を作成して、どこにいてもXAMLに3回追加するだけで、1回だけ作成する必要があります。そして、 'GestureRecognizer'のすべてがまったく同じ場合は、' GestureRecognizer'を単一のContentView'インスタンスに添付して、単一のインスタンスを3つの異なる行に追加することもできます。いずれにせよ、 'GestureRecognizer'を単独で行に付けることができないので、3行すべてに何かを追加する必要があります。 – hvaughan3

+1

ご協力いただきありがとうございます。コンテンツビューをグリッド行に配置し、列全体にまたがってこれを解決しました。 –

関連する問題