繁体   English   中英

在WPF中,如何捕获Canvas上的鼠标并仍然找到光标悬停的控件?

[英]In WPF, how can I capture mouse on a Canvas and still find what controls the cursor is hovering over?

我有一个自定义的Canvas控件(从Canvas继承),覆盖了大范围的用户控件。 这个想法是在用户控件(即连接器线)之间绘制路径。

为了捕获鼠标的移动,我在MouseDown上调用Mouse.Capture(theCanvas) 这很漂亮,但是用户在画布下的控件显然不再接收鼠标事件。 Mouse.DirectlyOver始终显示画布,因此我不能通过偷看当前位置并查看结束了哪个用户控件来伪造画布。

因此,我仍然需要使用Canvas绘制路径,但是如何解决以下一种方法:

  1. 窥视“画布”下的内容,看看其中最顶层的控件是什么?
  2. 获取此MouseDown-> Track MouseMoves-> MouseUp工作流以在画布上工作而无需捕获鼠标?

任何其他想法都欢迎...

我同意这是您的两个选择。 如果您只想将一些点击转发给用户控件,请选择选项1,然后在画布下点击测试控件。

如果您需要用户控件的行为好像没有什么东西覆盖它们(文本框,按钮等),那么我建议您在用户控件的父控件上使用PreviewMouseMove事件,因为这可以拾取控件之前的事件并可以选择“处理”事件获取事件,但是如果您未将handle设置为true,它将不会阻止事件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM