这是一款Windows Phone 7 Silverlight应用。我有一个ItemsControl显示滚动列表。我使用Grid作为ItemTemplate中的容器。我想捕获网格上的单击事件(触摸)以导航到单击项目的详细信息视图。但是,我看到的唯一可用的事件是鼠标事件,它们也用于滚动。我更熟悉Android编程,其中框架为我区分滚动事件和点击事件。我如何在WP7上做同样的事情?我想忽略触摸事件,因为它们与滚动相关联,但捕获用户实际点击的点击事件。手动方式是处理MouseLeftButtonUp并在滚动时设置一个标志,告诉我忽略该事件,但我希望每次需要显示列表时都要自己编写。我认为这是一个非常常见的用例,有一个简单的解决方案。
解
下面马特的回答有效,但这里有一个完整的描述,说明我如何让它为将来谷歌的人工作。
要添加到需要此功能的页面和控件的命名空间:
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>
答案 0 :(得分:1)
如果您使用的是最新工具/目标7.1(芒果)设备,那么您可以在网格上使用Tap
事件。
如果您仍在定位7.0,那么您可以使用Click
事件或使用Toolkit中的GestureListener
来检测点按。