UWP - 有没有办法在退出 ListView 时更改鼠标光标而不在拖放期间触发事件?

Posted

技术标签:

【中文标题】UWP - 有没有办法在退出 ListView 时更改鼠标光标而不在拖放期间触发事件?【英文标题】:UWP - Is there any way to change the mouse cursor when exiting ListView without the event being triggered during drag and drop? 【发布时间】:2020-03-28 19:35:25 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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 就可以按预期工作了。

最好的问候。

【讨论】:

以上是关于UWP - 有没有办法在退出 ListView 时更改鼠标光标而不在拖放期间触发事件?的主要内容,如果未能解决你的问题,请参考以下文章

UWP IsNullOrEmptyStateTrigger 不适用于 ListView

如何使用类似表格的 DataTemplate 在 UWP ListView 中动态缩放列宽

如何在 Xamarin UWP 上的 ListView 中释放内存?

Xamarin 中 ListView 的不同视图形式 Android 和 UWP

UWP-ListView到底部自动加载更多数据

UWP:ListView ItemClick 不起作用