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可以正常工作了。
此致。
我有一个可拖动的 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可以正常工作了。
此致。