gpt4 book ai didi

wpf - 我可以让 WPF 为覆盖元素和被覆盖元素设置 IsMouseOver 吗?

转载 作者:行者123 更新时间:2023-12-04 14:11:04 24 4
gpt4 key购买 nike

这个简化的例子;
描绘由重叠的两个元素 A 和 B 组成的维恩图。
如果我将鼠标悬停在 (A AND (NOT B)) 上,所有 A 都会亮起。
如果我将鼠标悬停在 (B AND (NOT A)) 上,所有 B 都会亮起。
如果我将鼠标悬停在(A 和 B)上,两者都应该亮起。只有最顶部被标记为将鼠标悬停在上面。

有没有办法让 IsMouseOver 像这样隧道?
如果没有,有什么建议吗?

最佳答案

您可以使用 VisualTreeHelper 进行手动 HitTest 。这可以进入某个父对象上的 MouseMove 处理程序。在这里,我假设有一个由名为 RedCircle 和 BlueCircle 的椭圆组成的维恩图:

bool overRed = false;
bool overBlue = false;
if (BlueCircle.IsMouseOver || RedCircle.IsMouseOver)
{
HitTestParameters parameters = new PointHitTestParameters(e.GetPosition(RedCircle));
VisualTreeHelper.HitTest(RedCircle, new HitTestFilterCallback(element => HitTestFilterBehavior.Continue), result =>
{
if (result.VisualHit == RedCircle)
overRed = true;
return HitTestResultBehavior.Continue;
}, parameters);

parameters = new PointHitTestParameters(e.GetPosition(BlueCircle));
VisualTreeHelper.HitTest(BlueCircle, new HitTestFilterCallback(element => HitTestFilterBehavior.Continue), result =>
{
if (result.VisualHit == BlueCircle)
overBlue = true;
return HitTestResultBehavior.Continue;
}, parameters);
}

关于wpf - 我可以让 WPF 为覆盖元素和被覆盖元素设置 IsMouseOver 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3259161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com