2009-04-16 1 views
0

아주 잘 알려진 사실은 라우트 된 이벤트가 모든 요소를 ​​통칭하는 것이 아니라 상위가 위를 이동한다는 것입니다.라우팅 된 이벤트 (wpf)

그러나 이벤트 핸들러는 두 개의 서로 다른 컨트롤의 공통 부모에 연결할 수 있다는 사실도 알려져 있습니다.

제 질문은 어떻게 되나요?

나는 그것이 "InnerGrid"에서 "묻혀"도착로

<Grid Name="MainGrid"> 
    <Listbox Name="lb1"/> 
    <Grid Name="InnerGrid"> 
     <Listbox Name="lb2"/> 
    </Grid> 
</Grid> 

처럼 "LB1"에 정의 된 마우스 이벤트 핸들러가 해고되지 않습니다 보인다 XAML 있습니다. 내 질문은 "MainGrid"또는 "lb1"에 정의 된 이벤트 처리기가 실행되는 다른 곳에서 코드를 작성하는 방법입니다. 아니면 이것을 성취 할 수있는 다른 기법 일 수도 있습니다.

많은 감사.

+0

이것은 어리석은 질문 일지 모르지만 처음에는 InnerGrid 아래에 lb1을 묻어 버리는 이유는 무엇입니까? ;) –

+0

당신의 질문은 절대적으로 합리적입니다. 내가 위에 물어 본 질문은 짧은 이야기를 짧게 자르는 것과 같습니다. 기본적으로 1024x768의 화면 공간은 너무 수용하기 쉽지 않으며 그 형태로 많은 컨트롤이 있습니다. :) –

답변

1

정확히 무엇을 묻고 있는지 잘 모르겠지만 이미 처리 된 이벤트를 호출 할 수 있기를 원합니다.

this.AddHandler(RoutedEvent, Delegate, bool); 

경우에 패스 (MouseDown 또는 등), 대리인이 (lb1_MouseDown 같은)를 호출하는 전화, InitializeComponent() 후 생성자에서 뒤에 코드에서

, 그리고 :

이 시도 true은 이미 처리 된 이벤트에 대해 호출되기를 나타냅니다.