MouseMove 이벤트에서 마우스 아래에 요소 배열을 가져 오는 방법이 있습니까?WPF 마우스 아래에 요소 가져 오기
답변
페이지 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
을 참조하십시오.
VisualTreeHelper.HitTest을 사용할 수 있습니까?
http://lukieb.blogspot.com/2008/07/visualtreehelperhittest.html
링크 된 예제에서 사용 된 오버로드 ([대답에 직접 복제해야 함] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain- 링크 - 다른 - 정말 - 좋은 답변)) 마우스 위치에서 최상위 요소를 찾을 수 있지만, **하지 ** 마우스 아래에 요소의 배열. –
또한 마우스 아래에있는 최상위 요소를 얻기 위해 Mouse.DirectlyOver 속성을 사용하여 시도 할 수 있습니다. "WPF Unleashed"에서
이렇게하면 마우스 아래에 배열 요소를 제공하지는 않지만 사실 맨 위 요소 만 반환합니다. –
좋은 예를 보려면 다음 msdn 링크 (절 : 히트 테스트 결과 콜백 사용)를 참조하십시오. [http://msdn.microsoft.com/en-us/library/ms752097.aspx](http://msdn.microsoft.com/en-us/library/ms752097.aspx) –
2010 년 버전의 503 페이지 그 책. 참고하시기 바랍니다. – Sabuncu
대부분의 시간은 사용자가 필요로하지 않는 시각적 트리 요소를 얻습니다. 논리 뷰 요소를 얻으려면 조회의 부모를 재귀 적으로 검색해야합니다. – henon