2011-09-23 49 views
1

這是一個Windows Phone 7 Silverlight應用程序。我有一個ItemsControl顯示一個滾動列表。我在ItemTemplate中使用Grid作爲容器。我想要捕獲網格上的點擊事件(觸摸),以導航到點擊項目的詳細信息視圖。然而,我看到的唯一事件是鼠標事件,它們也在滾動中使用。我更熟悉Android編程,其中框架爲我區分滾動事件和點擊事件。我如何在WP7上做同樣的事情?我想在與滾動相關聯時忽略觸摸事件,但捕獲用戶實際點擊的點擊事件。手動的方式是處理MouseLeftButtonUp,並在滾動時設置一個標誌,讓我忽略事件,但是我希望避免每次需要顯示列表時自己編寫這個標記。我認爲這是一個非常普遍的用例,它有一個簡單的解決方案。ItemsControl項目中的捕獲單擊事件

SOLUTION

馬特的回答以下的工作,但這裏是我如何得到它爲那些誰在未來的谷歌這方面的工作的完整描述。

  1. 下載並安裝Silverlight工具包爲WP7:http://silverlight.codeplex.com/releases/view/60291
  2. 到Microsoft.Phone.Controls.Toolkit.dll加入項目參考
  3. 包括工具箱命名空間
  4. 添加GestureListener的項目應接收點擊事件:

命名空間添加到需要這個功能的頁面和控件:

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 
xmlns:toolkitPrimitives="clr-namespace:Microsoft.Phone.Controls.Primitives;assembly=Microsoft.Phone.Controls.Toolkit" 

更新列表XAML(略):

 <ItemsControl ItemsSource="{Binding FeedItems}"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 

        <!-- Container --> 
        <Grid HorizontalAlignment="Stretch"> 
         <toolkit:GestureService.GestureListener> 
          <toolkit:GestureListener 
           Tap="OnFeedItemTap" /> 
         </toolkit:GestureService.GestureListener> 

回答

1

如果您正在使用最新的工具/靶向7.1(芒果)設備,那麼你可以使用對電網的Tap事件。

如果你還在靶向7.0,那麼你可以使用Click事件或使用GestureListenerToolkit檢測水龍頭。

+0

那麼,安裝SL工具包,並且控件會有一個Tap事件?我是否需要導入任何名稱空間或更改爲其他類型的控件?我正在安裝SL工具包。 – Rich

+0

Nevermind ...找到了一個例子,並得到它的工作。謝謝! – Rich