2008-09-05 8 views

답변

34

페이지 383 :

비주얼 히트 테스트는 당신에게 교차에 대한 모든Visual들 을 알릴 수있는 위치, [...]를 사용해야합니다 [...] [VisualTreeHelper.]HitTest 메서드는 HitTestResultCallback 대리자를 허용합니다. 이 버전 HitTest이 반환되기 전에 관련 관련 Visual에 대해 한 번만 호출됩니다. 가장 아래쪽에서 부터 시작하여 끝납니다.

이러한 콜백의 서명

HitTestResultBehavior Callback(HitTestResult result) 

이고 (MSDN에 연결된 페이지) 아래에 도시 된 바와 같이, 상기 히트를 수신 HitTestResultBehaviour.Continue을 리턴한다 :

// Return the result of the hit test to the callback. 
public HitTestResultBehavior MyHitTestResult(HitTestResult result) 
{ 
    // Add the hit test result to the list that will be processed after the enumeration. 
    hitResultsList.Add(result.VisualHit); 

    // Set the behavior to return visuals at all z-order levels. 
    return HitTestResultBehavior.Continue; 
} 

자세한 내용은 MSDN documentation for VisualTreeHelper.HitTest을 참조하십시오.

+5

좋은 예를 보려면 다음 msdn 링크 (절 : 히트 테스트 결과 콜백 사용)를 참조하십시오. [http://msdn.microsoft.com/en-us/library/ms752097.aspx](http://msdn.microsoft.com/en-us/library/ms752097.aspx) –

+1

2010 년 버전의 503 페이지 그 책. 참고하시기 바랍니다. – Sabuncu

+1

대부분의 시간은 사용자가 필요로하지 않는 시각적 트리 요소를 얻습니다. 논리 뷰 요소를 얻으려면 조회의 부모를 재귀 적으로 검색해야합니다. – henon

36

또한 마우스 아래에있는 최상위 요소를 얻기 위해 Mouse.DirectlyOver 속성을 사용하여 시도 할 수 있습니다. "WPF Unleashed"에서

+0

이렇게하면 마우스 아래에 배열 요소를 제공하지는 않지만 사실 맨 위 요소 만 반환합니다. –