2016-05-24 48 views
4

我有一個網格,其中有3列包含2個按鈕和1個標籤。我想要的是添加一個點擊手勢到網格中的每一行。我希望在用戶點擊網格行中的任何位置時觸發點擊事件。有沒有辦法做到這一點?將GestureRecognizer添加到gridview中的行

我想保持我的佈局儘可能簡單。在我使用多個堆棧佈局創建相同的網格並添加手勢到父級堆棧佈局之前。但爲了表現我想用網格視圖來做這個。

+0

我剛剛意識到'ContentView.GestureRecognizers'不只是適用於'ContentView',但也適用於其他UI元素一樣'Label'即''的作品! @ 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

然後,我需要3個contentviews,因爲每行有3列,然後向所有行添加手勢。這將太長。 –

+0

@AkashAmin那麼你可以在你的代碼後面或之後創建一個'ContentView',並將它添加到你的XAML中3次,這樣只需要創建1個。然後,如果所有'GestureRecognizer'完全相同,則可以將'GestureRecognizer'附加到單個'ContentView'實例,並將單個實例添加到三個不同的行。無論採用哪種方式,您都必須向所有三行添加內容,因爲您無法將「GestureRecognizer」附加到行本身。 – hvaughan3

+1

感謝您的幫助。我已經通過將內容視圖放入網格行並橫跨我的列來解決此問題。 –