1

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

4

5 回答 5

1

我在这里回答了一个类似的问题:

Windows 8 Metro:如何获得点击的 GridViewItem?

如果您尝试获取用户单击的项目的 GridViewItem 对象,则可以使用 GridView 的 ItemContainerGenerator.ContainerFromItem 方法由 GridView 的 ItemClick 事件捕获。

于 2012-12-04T16:01:00.457 回答
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包含选定项目模型。

于 2016-10-17T07:14:38.687 回答
0

DataContext你的TextBlock就是你想要的。

于 2012-12-04T08:38:59.933 回答
0

您可以尝试使用附加行为(即WinRT 行为)并使用它将点击事件中继到视图模型中的命令

于 2012-12-04T06:11:57.873 回答
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 保存的整个对象数据

于 2012-12-04T04:59:13.703 回答