UWP - 是否有任何方法可以在退出 ListView 时更改鼠标光标,而不会在拖放过程中触发事件?

UWP - Is there any way to change the mouse cursor when exiting ListView without the event being triggered during drag and drop?

我有一个可拖动的 ListView,它在 PointerEntered、PointerPressed 和 DragItemsStarting 事件上更改鼠标光标。问题是每次我执行拖放时,我总是触发 PointerExited,它将光标重置回箭头。

如果不能不触发PointerExited,还有什么方法可以在退出Listview时将光标重新设置为箭头?

我们可以在触发PointerExited事件时判断事件本身。

PointerExited确实在拖动ListViewItem时触发,但PointerRoutedEventArgs.OriginalSource与正常移动指针不同。这是我们判断的依据。

试试这个:

private void ListView_PointerExited(object sender, PointerRoutedEventArgs e)
{
    if(e.OriginalSource is ListViewItemPresenter)
    {
        return;
    }
    Window.Current.CoreWindow.PointerCursor = new CoreCursor(CoreCursorType.Arrow, 0);
}

拖动时,触发PointerExited事件的源是ListViewItemPresenter。通过这个判断,Cursor可以正常工作了。

此致。