拖放 - 在 UWP 中滞后

drag and drop - lag in UWP

你好拖放粉丝,

任何人都可以解释为什么在我的 UWP 应用程序中使用拖放时会出现很长的滞后时间吗?

我编写了一个测试应用程序,其中仅包含拖放消息处理程序以及用于比较的指针处理程序。这是代码...

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();

        grid1.AllowDrop = true;
        grid1.DragOver += Grid1_DragOver;
        grid1.Drop += Grid1_Drop;
        grid1.DragLeave += Grid1_DragLeave;

        grid1.PointerEntered += Grid1_PointerEntered;
        grid1.PointerExited += Grid1_PointerExited;

    }

    //  Drag Handlers ************************
    private void Grid1_DragOver(object sender, DragEventArgs e)
    {
        msgFromPointer.Text = "  drag/drop item has entered";

        e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Copy;
        Debug.WriteLine("in grid1 drag over handler");
    }

    private void Grid1_DragLeave(object sender, DragEventArgs e)
    {
        msgFromPointer.Text = "";
    }

    private void Grid1_Drop(object sender, DragEventArgs e)
    {
        Debug.WriteLine("in grid1 drop handler");
    }


    // pointer handlers *******************
    private void Grid1_PointerEntered(object sender, PointerRoutedEventArgs e)
    {

        msgFromPointer.Text = "POINTER has entered";
    }

    private void Grid1_PointerExited(object sender, PointerRoutedEventArgs e)
    {
        msgFromPointer.Text = "";
    }

当拖放我的应用程序时,在我的应用程序收到 dragOver 消息之前似乎有大约 1/2 秒的延迟。相比之下,pointerOver 消息似乎几乎与指针移动同时到达。使用触摸屏或鼠标时,缓慢的行为是相同的。这是该行为的视频……

video of the laggy behavior

我使用的 PC 有触摸屏,我想知道是否有某种触摸“驱动程序”或过滤器会减慢拖放消息的速度。我已经尝试了一堆 Windows 配置设置,例如鼠标和显示设置,但没有任何改变。 PC 是 Dell Inspiron 3593,具有最新的驱动程序。我的 Windows 10 版本是 1903,build 18362.836

我正在开发的应用程序使用了大量的拖放操作,这种缓慢的行为使用户界面非常困难。这有点像尝试以 1/2 秒的延迟进行 phone 对话。

有什么想法吗?

当应用程序确定当前指针下的元素是潜在的放置目标时,将触发DragOver 事件。

这需要指针悬停一段时间。这可能是您认为延迟的原因。

可以试试DragEnter事件,触发时间早于DragOver

谢谢