Drag and drop 在具有不同图层的散点视图中捕获SurfacedDragDropEventArgs(zIndex)

Drag and drop 在具有不同图层的散点视图中捕获SurfacedDragDropEventArgs(zIndex),drag-and-drop,event-handling,pixelsense,scatterview,Drag And Drop,Event Handling,Pixelsense,Scatterview,我正在尝试用两部Android手机和一个surface应用程序实现一个照片共享应用程序,该应用程序使用的是Windows Touch Beta工具包。因此,我创建了一个名为MainScatterView的ScatterView作为基本布局。每次用户触摸屏幕时,将在此MainScatterView中创建一个Blob。Blob本身是一个ScatterView项目,它包含一个名为Blob的ScatterView。此Blob包含Android手机上特定相册的照片 在两个blob之间拖放照片效果很好,但是

我正在尝试用两部Android手机和一个surface应用程序实现一个照片共享应用程序,该应用程序使用的是Windows Touch Beta工具包。因此,我创建了一个名为
MainScatterView
ScatterView
作为基本布局。每次用户触摸屏幕时,将在此
MainScatterView
中创建一个Blob。Blob本身是一个
ScatterView项目
,它包含一个名为
Blob
ScatterView
。此
Blob
包含Android手机上特定相册的照片

在两个blob之间拖放照片效果很好,但是如果我想在
MainScatterView
上拖放一个项目,则不会调用dependent
onDrop
方法。我的假设是,这个问题取决于
Blob
ScatterView
MainScatterView
所具有的不同层,但这只是一个假设。以下是我的XAML代码:


onDrop和OnDragPreviewTouchDown这两种不同的方法如下所示:

private void OnDragSourcePreviewTouchDown(对象发送方,TouchEventArgs e)
{
如果(allowDragDrop==true)
{
如果(例如,原始源是图像)
{
if((e.OriginalSource as Image).Parent是ScatterViewItem)//防止Hederline的图像作为foto处理
{
Image foto=(Image)e.OriginalSource;
字符串fotoID=(字符串)foto.DataContext;
ScatterViewItem draggedElement=(ScatterViewItem)(例如,原始源为图像);
双宽度=DragDelete.ActualWidth;
双倍高度=牵引力。实际高度;
双方向=draggedElement.ActualIentation;
ScatterViewItemDataContext=(ScatterViewItemDataContext)draggedElement.DataContext;
context.originCenter=draggedElement.ActualCenter;
ScatterView dragSource=(ScatterView)draggedElement.Parent;
ScatterViewItem ClonedDragDelete=createScatterViewItemClone(宽度、高度、方向、上下文、fotoID);
//创建可视光标。
ContentControl cursorVisual=新建ContentControl()
{
内容=克隆数据删除
};
//创建输入设备的列表。添加
//当前在拖动的元素中捕获,并且
//当前触摸(如果列表中没有)。
列表设备=新列表();
设备。添加(如触摸设备);
foreach(触摸设备触摸进入DragDelete.TouchesCapturedWithin)
{
如果(触摸!=e.TouchDevice)
{
设备。添加(触摸);
}
}
浮出水面的拉卡索星=
浮雕(
dragSource,//从中拖出光标的ScatterView对象。
DragDelete,//从拖动源拖动的ScatterViewItem对象。
cursorVisual,//光标的可视元素。
draggedElement,//随光标附着的数据。
devices,//开始拖动光标的输入设备。
System.Windows.DragDropEffects.Move);//允许的操作拖放效果。
//此if子句导致不会删除dragsource上的scatterviewitems!
如果(startDragOkay!=null)
{
//将e.Handled设置为true,否则ScatterViewItem将捕获触摸
//并导致创业失败。
e、 已处理=正确;
//隐藏ScatterViewItem。
draggedElement.Visibility=可见性.Hidden;
}
}
}
}
}
私有void OnDrop(对象发送方,SurfaceDragDropEventArgs e)
{
e、 已处理=错误;
Console.WriteLine(sender.ToString());
if(发送方为散射视图)
{
//获取拖动源SV并放置SV
散乱的