【发布时间】:2010-01-18 17:44:18
【问题描述】:
显然,对这个问题的直接回答是“否”,但对我来说,实现这种效果的最佳方法是什么?为了解释,这里有一点背景......
我有一个应用程序,它显示一个图像以及该图像上的几层叠加形状。所有这些都放置在一个网格单元中,彼此重叠,图像位于局部 z 顺序的底部。为了速度,叠加层被实现为从 FrameworkElement 派生的类,它们创建和管理自己的视觉效果。
这是一个基本图(尽管分解为 3D),说明了层的排列方式以及它们具有/需要的交互:
overlapped_controls.png http://www.afterbang.co.uk/mal/stackoverflow/overlapped_controls.png
如您所见,上层叠加层必须允许用户在图像中的任何位置拖出一个新矩形。为此,我给了它一个透明的背景,就像一块可以在上面画画的玻璃板。这样做的明显缺点是它会阻止所有鼠标事件向下传递到较低层。
我真的很想只在顶层的透明区域中捕获 左 鼠标按钮的事件,并让其他事件在 z 顺序更下方的层中命中。
对于这种事情,我应该遵循 WPF 模式吗?有什么最佳实践或技术吗?
我对 WPF 还很陌生,但想编写一个与 API 一致的解决方案。谢谢。
【问题讨论】:
标签: wpf events mouse z-order hittest