我真正想要的是IsHitTestVisible的一个版本,忽略了鼠标点击事件但仍捕获鼠标进入和离开事件。WPF:忽略上叠加/装饰器的鼠标点击,但处理MouseEnter事件
背景: 每次在焦点控制下弹出信息覆盖图。这是一项要求,所以我无权删除此行为。这是使用包含矩形形状的装饰器来实现的,该矩形填充了图像画笔。所有控件都以编程方式创建,不涉及XAML。
期望的行为: 当通过矩形用户将鼠标,它应该成为部分透明的。这样他们就可以看到叠加层下面的其他控件并点击它们。 当用户点击叠加层时,应该将点击传递给覆盖层下的任何控件,就在用户点击的位置。
问题: 如果我设置IsHitTestVisible为True,让鼠标点击通过,我不明白的MouseEnter事件。
有一个简单的方式离开IsHitTestVisible True,然后通过所有,但2-3事件装饰器下方的正确的控制?我正在寻找一种解决方案,不涉及计算光标下的控件,因为WPF显然能够为我做这件事。
或者,我可以设置IsHitTestVisible为False,但然后用另一种简单的方法来确定,当鼠标移动到装饰器?
更新:我仍在期待一个答案,但截至目前最有前途的解决方案似乎离开IsHitTestVisible真实的,并使用WPF命中测试的API搞清楚是鼠标底下是什么类型的控制光标;如果这是我所知道的,我会发送一个Click命令给它。不知道这是否值得做,但;截至目前点击解除我的覆盖,所以用户只需点击两次。
谢谢!
你有没有解决这个问题?我有完全相同的要求。 – Grokys 2014-02-06 19:38:59