我真正想要的是一个忽略鼠标点击事件,但仍然捕获鼠标进入和离开事件的IsHitTestVisible版本。
背景:无论何时,都会在带有焦点的控件下弹出一个信息覆盖。这是一个要求,所以我不能随意删除此行为。这是使用一个装饰器实现的,该装饰器包含一个矩形形状,并用图像画笔填充。所有控件都是以编程方式创建的,不涉及XAML。
所需的行为:当用户将鼠标移到矩形上时,它应该变得部分透明。这样他们就可以看到覆盖图下面的其他控件并单击它们。当用户单击覆盖图时,单击应该传递到覆盖图下的任何控件,就在用户单击的位置。
问题:如果将IsHitTestVisible设置为True以允许鼠标单击通过,则无法获得MouseEnter事件。
有没有一种简单的方法可以离开IsHitTestVisible True,然后将除2-3个事件之外的所有事件传递给装饰器下面的正确控件?我正在寻找一种不涉及计算光标下的控件的解决方案,因为WPF显然能够为我做这件事。
或者,我是否可以将IsHitTestVisible设置为False,然后使用另一种简单的方法来确定鼠标何时位于装饰器上?
更新:我仍然希望得到一个答案,但到目前为止,最有希望的解决方案似乎是让IsHitTestVisible保持为真,并使用WPF测试API来确定鼠标光标下面是哪种类型的控件;如果是我所知道的控件,我会向它发送一个单击命令。不过,我不确定这样做是否值得;到目前为止,单击会取消我的覆盖,因此用户只需单击两次。
谢谢!
https://stackoverflow.com/questions/3893809
复制相似问题