2014-03-31 6 views
1

마우스를 클릭 할 때 System.Windows.Media.VisualTreeHelper.HitTest을 사용할 때 항상 맨 위에 요소를 반환합니다. 두 개의 요소가 서로 겹치면 캔버스에서 ZIndex가 더 높은 요소를 얻습니다.WPF Canvas에서 ZIndex가 더 낮은 요소를 HitTest 할 수 있습니까?

나는 또한 this way을 시도했지만, 심지어 내가 IsHitTestVisible = False을 만든 후에도이 동일한 것을 내게 되 돌렸다.

"밑에"요소를 가져올 수 있습니까? 사전에

감사합니다!

답변

3

Hit Testing in the Visual Layer 여기에서 "적중 테스트 및 Z 주문"섹션을 참조하십시오. 코드 예는 VisualTreeHelper.HitTest Method입니다. 한마디로

, 당신은 HitTestResultCallback을 걸릴 HitTest() 방법 중 하나를 사용합니다, 당신은 당신이 찾고있는 요소에 도달 할 때까지 콜백 반환 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; 
} 
+0

는 놀라운 작품! 그것은 그것을 조정하는 데 시간이 걸렸지 만 내가 그랬을 때 - 그것은 단지 잘됐다! – GoMati