拖放-UWP中的滞后

问题描述 投票:0回答:1

Hello拖放粉丝,

任何人都可以解释为什么在我的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,内部版本18362.836

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

有什么想法吗?

windows uwp drag-and-drop lag
1个回答
0
投票

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

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

您可以尝试DragEnter事件,该事件早于DragOver触发。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.