gpt4 book ai didi

wpf - 为什么拖放会阻止 UIElement.IsMouseOver 正确返回?

转载 作者:行者123 更新时间:2023-12-04 16:37:49 26 4
gpt4 key购买 nike

我正在就此问题的原因打开一个单独的问题,以便我的另一个问题可以是关于可能的解决方法。

所以我为 ListView 启用了拖放功能,但我注意到 UIelement.IsMouseOver 在拖放操作期间不起作用。特别是在拖放操作期间,如果在鼠标悬停在某个元素上时测试 IsMouseOver,它将在应该返回 true 时返回 false。在拖放操作之前测试时,相同的功能完美运行。

我也看到网上有一个问题。

来源:“这是因为当我们执行拖放操作时,WPF 会阻止所有鼠标操作。您可以使用带有动画的 EventTrigger 来执行此操作。”

http://social.msdn.microsoft.com/Forums/vstudio/en-US/9a73b1b0-ec76-4b2c-8da6-91c71e3c406f/wpf-mouse-click-event-on-scrollbar-issue?forum=wpf

但是,我想知道“阻止所有鼠标操作”到底是什么意思。似乎有人应该修复 IsMouseOver 以使用拖放操作

最佳答案

我不认为这是一个问题,因为它是 wpf 设计的方式。进行拖放操作时,鼠标不会阻止正在捕获的任何鼠标。为了将 IsMouseOver 属性设置为 True,wpf 中的控件或视觉对象需要捕获鼠标指针。但是,当您开始将某些内容从源控件拖动到目标控件时,目标控件不会在其上捕获鼠标一次,因为它是鼠标曾经并且仍在按下的源控件。源代码管理需要捕获鼠标并将其保持捕获状态,直到完成所需的操作。例如,通过源代码管理捕获鼠标,源代码管理可以跟踪鼠标所在的位置,并检查鼠标指针当前所在的视觉对象是否允许放置行为。如果是这样,鼠标光标将发生变化。

对此有很多解决方案。您可以在您的样式中使用 EventTrigger 并监听拖动事件,而不是让简单的 Trigger 监听 IsMouseOver。另一种解决方案是拥有自己的属性(property)。由于 IsMouseOver 只有一个 getter,您可以创建自己的附加属性,允许在执行鼠标悬停或拖放操作时设置自身。您可以使用自己的属性来代替 IsMouseOver。

关于wpf - 为什么拖放会阻止 UIElement.IsMouseOver 正确返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21172916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com