2011-05-16 1 views
1

다음 문제를 해결하려고합니다. 3 행, 1 열이있는 그리드가 있습니다. 각 셀에는 몇 가지 하위 컨트롤이 있습니다. 또한 전체 Grid에 걸쳐 일부 비주얼을 렌더링하는 "오버레이"와 같은 3 행 전체를 제어 할 수 있습니다. 이 오버레이와 서브 컨트롤에 대한 히트 테스트가 필요합니다. 그러나 논리적/시각적 트리가 어떻게 구성되어 있는지에 따라 오버레이의 부모는 그리드이며 자식은 오버레이와 같은 수준에 있습니다. 어떻게하면 이벤트가 Grid의 다른 컨트롤에 맞춰 지도록 WPF 트리를 구성 할 수 있습니까? 오버레이가 이벤트를 처리하지 않습니다WPF 레이아웃 및 이벤트 라우팅 (히트 테스트) - 계층 구조를 어떻게 구성합니까?

Grid 
    - Row 1 Control 
    - Row 2 Control 
    - Row 3 Control 
    - Overlay (Row 1 - 3) Control 

경우, 내가 행에 1/2/3 컨트롤을 처리 할 필요가 :

나무는 다음과 같이 보입니다. 나는 나의 질문이 분명하기를 바랍니다.

답변

1

VisualTreeHelper.HitTest을 사용하는 hittesting에 대한 WPF의 지원을 살펴보십시오.

+0

고마워.하지만 내 문제를 올바르게 나타내는 시각적 트리가 먼저 필요하다고 생각합니다. 오버레이 노드에서 VisualTreeHelper.HitTest 메서드를 사용할 때 아무 것도 누르지 않으면 다른 3 개의 컨트롤 (행 1 - 3)이 테스트되지 않습니다. – slurmomatic

+0

Grid에서 시작 참조로 VisualTreeHelper.HitTest를 사용하는 경우 HitTest 메서드는 Overlay 컨트롤과 다른 세 개의 컨트롤을 포함하여 Grid의 모든 자식을 테스트합니다. 이는 내가 제공 한 링크에서 "Visual Tree가 적중 테스트에 미치는 영향"섹션에서 설명합니다. –

+0

감사합니다. 나는 그것을 놓쳤습니다. 다른 사건을 어떻게 처리할까요? – slurmomatic