我可以在WPF画布中使用ZIndex较低的HitTest元素吗?

问题描述 投票:1回答:1

当我在鼠标单击画布上使用System.Windows.Media.VisualTreeHelper.HitTest时,它总是将元素返回到顶部。我的意思是,如果有两个元素相互重叠,我得到的就是画布中ZIndex较高的元素。

我也尝试过this way,但是即使我做了IsHitTestVisible = False,它仍然向我返回了同样的一个。

是否有可能使元素“在下面”?

c# wpf canvas hittest
1个回答
4
投票

请参见“命中测试和Z顺序”一节:Hit Testing in the Visual Layer,以及代码示例:VisualTreeHelper.HitTest Method

简而言之,您需要使用采用HitTest()HitTestResultCallback方法之一,然后从回调中返回HitTestResultBehavior.Continue直到找到所需的元素:

Point pt = ...
VisualTreeHelper.HitTest(myCanvas, null,
                         new HitTestResultCallback(MyHitTestResult),
                         new PointHitTestParameters(pt));
...

private HitTestResultBehavior MyHitTestResult(HitTestResult result)
{
    DoSomethingWith(result.VisualHit);

    //Set the behavior to return visuals at all z-order levels. 
    return HitTestResultBehavior.Continue;
}
© www.soinside.com 2019 - 2024. All rights reserved.