将鼠标悬停在地图元素上时更改指针光标

Change pointer cursor when hovering over map elements

我的 UWP 应用程序包含一张带有多个 POI 的地图。当鼠标悬停在特定的 poi 上以指示其可点击时,我试图将鼠标光标从箭头更改为手。

这会在它进入地图时立即更改光标,作为一个简单的测试,我为地图控件添加了一个 PointerEntered 事件,并且在其中我有以下内容来更改光标:

 Window.Current.CoreWindow.PointerCursor = new Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.Hand, 0);

看起来虽然光标确实发生了变化,但是立即被覆盖回指针光标。

编辑:刚刚意识到当一个 poi 被点击(即被选中)时,即使不在地图控件上,光标也会变成一只手,直到 poi 被取消选择。不好,因为我希望光标在悬停在 poi 上时动态变化,并在移开时恢复为光标。

我不知道它是否像 WinForms 一样工作,我不得不做这样的事情来点击标签(无法使用 link-标签),我使用的是 Mouse_Move 标签的事件,基本上是

if (Cursor.Current == Cursors.Default)
{
    Cursor.Current = Cursors.Hand;
}

以及由于各种条件而导致的类似变化和行为。然而,这给我带来了一个小问题:每当您在控件上移动时,此语句都会更改鼠标图形,但我个人在 Windows 设置上使用鼠标的轨迹图形功能(每当我移动鼠标时都会留下指针轨迹在屏幕上),我建议你禁用这个功能,或者更好的是,它隐藏它,因为它为你在控件上所做的每一个动作“重新创建”鼠标图形,因此它“撤消”鼠标图形并重新创建它作为一只手(在我的例子中)。如果它不关心你,它工作得很好。 我重复一遍:我在 WinForms 上使用它,但由于它是 C#,我想它会起作用(?)

Change pointer cursor when hovering over map elements

恐怕你不能编辑地图元素的默认光标,因为它已经在内部处理,它不会触发,即使你有监听 PointerEntered 事件,它被控件消耗而不是传递了控制链。如果您确实需要此功能,更好的方法是 post 此功能与 windows feed backhub 应用程序。