我使用UIElement.StartDragAsync
实施了拖放操作。
代码如下。此代码在我的桌面上完美运行,
但在移动模拟器上运行时不起作用。发生的事情是DragCompleted总是在PointerPress -> OnDragStarting
之后立即触发。当我使用单点触摸输入和放大器时,会发生这种情况。模拟器上的单点鼠标触摸输入。没有抛出异常,我也不使用错误处理代码。
private void OnDragStarting(UIElement sender, DragStartingEventArgs e)
{
e.Data.SetText("DRAG");
}
private void OnPointerPressed(object sender, PointerRoutedEventArgs e)
{
if (!CanDragDrop) return;
var pointerPoint = e.GetCurrentPoint(sender as UIElement);
var dragOp = StartDragAsync(pointerPoint);
dragOp.Completed += DragCompleted;
}
private void DragCompleted(IAsyncOperation<DataPackageOperation> asyncInfo, AsyncStatus asyncStatus)
{
_dragOperation = null;
if (asyncInfo.GetResults() == DataPackageOperation.Move)
{
// do stuff
}
}