如何在gridview中获取tapped项目

时间:2012-12-04 04:42:42

标签: c# xaml windows-8

我想在我的gridview中获取tapped项目,但是由于某种原因我无法使用itemclick事件,在获取该项目之后,我还想将其转换为项目所持有的对象。 gridview有DataTemplate,当我在tapped事件中看到e.OriginalSource值时,它是一个TextBlock。有人可以帮忙吗?

5 个答案:

答案 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就是你想要的。