ListViewItem拖放操作卡住

时间:2019-05-03 11:19:14

标签: c# uwp uwp-xaml

在普通UWP ListView中对listviewitems进行拖放操作期间,有时Windows共享崩溃

在我决定关闭该应用程序之前,该项目一直停留在那里(“正在用于共享弹出窗口”)-实际上,Windows资源管理器似乎不允许任何拖放操作,直到应用程序关闭!

从调试中我可以看到 DragEnter 被触发,但是没有 DragItemsCompleted

New App

如何复制此问题

  1. 创建一个新的UWP应用

    • TargetAPI:1803
    • MinAPI:1803
  2. 创建ListView

<ListView CanDragItems="True">
    <ListView.Items>
        <ListViewItem>asdf</ListViewItem>
        <ListViewItem>asdf</ListViewItem>
        <ListViewItem>asdf</ListViewItem>
        <ListViewItem>asdfEx</ListViewItem>
    </ListView.Items>
</ListView>
  1. 快速拖动项目并将其释放到列表视图的顶部 3.1有时会立即卡住,有时会需要更多尝试

3 个答案:

答案 0 :(得分:0)

可能的错误(没有看到更多代码。):您没有捕获鼠标,因此您的应用程序不会检测到您的up事件

请参阅mouse.capture

对于UWP,请参见UIElement.CapturePointer

答案 1 :(得分:0)

这似乎是Windows 1803的一个特定错误-按Escape键似乎可以解除UI阻塞。

我在后面的代码中尝试过的一切似乎都没有效果...

答案 2 :(得分:0)

我可能已经找到了答案(至少现在它对我有用)。我以前使用以下代码触发了DragStarting

Private Async Sub brdPlayer_PointerPressed(sender As Object, e As PointerRoutedEventArgs)
    Await CType(sender, Border).StartDragAsync(e.GetCurrentPoint(CType(sender, Border)))
End Sub

但是,这导致DragStarting被触发两次(可能还有其他东西),所以当我通过添加以下代码来修改代码时:

e.Handled = True

我仍在测试其他情况,以确保这确实可以解决整个问题,但希望它对您有帮助!