我想在我的gridview中获取tapped项目,但是由于某种原因我无法使用itemclick事件,在获取该项目之后,我还想将其转换为项目所持有的对象。 gridview有DataTemplate,当我在tapped事件中看到e.OriginalSource值时,它是一个TextBlock。有人可以帮忙吗?
答案 0 :(得分:1)
我在这里回答了类似的问题:
Windows 8 Metro: How to get clicked GridViewItem?
如果您正在尝试获取用户单击的项目的GridViewItem对象,可以使用GridView的ItemContainerGenerator.ContainerFromItem方法通过GridView的ItemClick事件捕获它。
答案 1 :(得分:1)
步骤1:启用IsTapEnabled =" True"并在Gridview中创建Tapped事件
<GridView x:Name="categoryItemsGV"
Margin="5,5,0,0"
IsItemClickEnabled="True" IsTapEnabled="True" Tapped="categoryItemsGV_Tapped"
SelectionMode="Single"
第2步:此GridView与 TableModel 列表绑定,并在Tapped Event下面
private void categoryItemsGV_Tapped(object sender, TappedRoutedEventArgs e)
{
var selectedTableModel= (TableModel)(sender as GridView).SelectedItem;
}
此 selectedTableModel 包含所选项目模型。
答案 2 :(得分:0)
您可以使用控件ListView的“onItemInvoked”事件,如下所示:
//item click handler for list view
document.getElementById("yourListViewId").addEventListener("iteminvoked", function(e) {
e.detail.itemPromise.then(function (invokedItem) {
WinJS.Navigation.navigate("url to another pages", { objectToTransfer: invokedItem.data });
});
});
使用“invokedItem.data”传递ListViewItem持有的整个对象数据
答案 3 :(得分:0)
您可以尝试使用附加行为aka WinRT Behavior并使用它将点击事件转发到视图模型中的命令
答案 4 :(得分:0)
DataContext
TextBlock
就是你想要的。