拖放 - 在 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 消息似乎几乎与指针移动同时到达。使用触摸屏或鼠标时,缓慢的行为是相同的。这是该行为的视频……
我使用的 PC 有触摸屏,我想知道是否有某种触摸“驱动程序”或过滤器会减慢拖放消息的速度。我已经尝试了一堆 Windows 配置设置,例如鼠标和显示设置,但没有任何改变。 PC 是 Dell Inspiron 3593,具有最新的驱动程序。我的 Windows 10 版本是 1903,build 18362.836
我正在开发的应用程序使用了大量的拖放操作,这种缓慢的行为使用户界面非常困难。这有点像尝试以 1/2 秒的延迟进行 phone 对话。
有什么想法吗?
段
当应用程序确定当前指针下的元素是潜在的放置目标时,将触发DragOver
事件。
这需要指针悬停一段时间。这可能是您认为延迟的原因。
可以试试DragEnter
事件,触发时间早于DragOver
。
谢谢
你好拖放粉丝,
任何人都可以解释为什么在我的 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 消息似乎几乎与指针移动同时到达。使用触摸屏或鼠标时,缓慢的行为是相同的。这是该行为的视频……
我使用的 PC 有触摸屏,我想知道是否有某种触摸“驱动程序”或过滤器会减慢拖放消息的速度。我已经尝试了一堆 Windows 配置设置,例如鼠标和显示设置,但没有任何改变。 PC 是 Dell Inspiron 3593,具有最新的驱动程序。我的 Windows 10 版本是 1903,build 18362.836
我正在开发的应用程序使用了大量的拖放操作,这种缓慢的行为使用户界面非常困难。这有点像尝试以 1/2 秒的延迟进行 phone 对话。
有什么想法吗?
段
当应用程序确定当前指针下的元素是潜在的放置目标时,将触发DragOver
事件。
这需要指针悬停一段时间。这可能是您认为延迟的原因。
可以试试DragEnter
事件,触发时间早于DragOver
。
谢谢