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