2

在 WinRT 中,我正在尝试为我的可变大小的 GridView 实现自定义拖放处理程序。在 DragItemsStarting 处理程序中,我可以使用 e.Items.FirstOrDefault() 获取正在拖动的项目。

我只有一个 GridView,因此该项目将被放置在其中的某个位置。如果它被放在另一个项目上,我需要知道该项目是什么,以便我可以将被拖动的项目插入该位置。

我怎样才能得到那个项目?线程提到使用 GridView.ItemContainerGenerator.ContainerFromItem(item) 但这似乎不起作用,我找不到任何好的 Drop 事件示例。

谢谢

4

1 回答 1

0

您可以处理 OnDragOver 和 OnDrop 事件,从事件参数中获取指针位置,然后使用 VisualTreeHelper.FindElementsInHostCoordinates 获取指针下的所有元素,然后分析这些元素并找到正确的元素,然后才能使用 ItemContainerGenerator.ContainerFromItem 获取项目。但是您将需要更多,因为最终用户可能会掉到某个没有任何物品的地方。您可以在这里查看示例:http: //www.codeproject.com/Articles/536519/Extending-GridView-with-Drag-and-Drop-for-Grouping

于 2013-04-22T09:43:43.683 回答