【发布时间】:2013-03-11 18:06:37
【问题描述】:
在下图中,有 6 个橙色矩形,它们充当放置目标。蓝色矩形在橙色矩形的前面。蓝色和橙色矩形都是同一个容器的子级。
我遇到的问题是当光标位于蓝色矩形上时,DragEnter、DragLeave 和 Drop 事件没有被触发。蓝色矩形似乎阻止了事件进入橙色矩形。这意味着用户必须在蓝色矩形之间精确定位光标才能放下项目。我想扩大放置区域以包括整个橙色矩形,同时在橙色矩形前面仍然有蓝色矩形。
如果它很重要,橙色矩形是 FrameworkElements,蓝色矩形是 DrawingVisuals。 FrameworkElements 具有拖放功能,而 DrawingVisuals 非常简单,没有。
如何让橙色矩形的 DragEnter、DragLeave 和 Drop 事件在光标悬停时触发,无论光标是否位于蓝色矩形上?
【问题讨论】:
-
你可以制作蓝色矩形
IsHitTestVisible="False"或者你还需要从蓝色矩形中截取鼠标事件吗? -
@sa_ddam213 我在某个时候尝试过,但
IsHitTestVisible似乎不适用于 DrawingVisuals。 -
啊,那么也许在橙色矩形上使用
PreviewDragLeave等 -
@sa_ddam213,有趣的想法,但仍然行不通。我认为因为这不是冒泡/隧道问题,而是命中测试问题。蓝色矩形在视觉树中不是更高/更低,它只是同一级别的不同 z 层(即,橙色不是蓝色的父级或子级)。
-
你能做一个你的布局的小样本 xaml,所以我可以看看。
标签: wpf drag-and-drop hittest