2012-08-01 1 views

답변

0

터널링 및 버블 링 이벤트를 사용하면 핸들러를 여러 요소간에 공유하고 계층 구조의 상위 컨트롤에서 인터셉트 할 수 있습니다.

<StackPanel> 
    <Button Command="MyCommand" /> 
    <Button Command="MyCommand" /> 
    <Button Command="MyCommand" /> 
    <Button Command="MyCommand" /> 
</StackPanel> 

나는 모든 버튼에 영향을 미칠 것 MyCommand에 대해 하나의 CommandBinding를 정의하려면

, 내가 StackPanel에 정의 할 수 있습니다 : 예를 들어, 다음 XAML을 부여. 각 버튼이 명령을 실행하려고하면 이벤트는 StackPanel으로 위쪽으로 바뀌며 4 개의 버튼에 대해 하나의 핸들러 만 필요합니다. 핸들러를 루트 Window 레벨에 배치하면 응용 프로그램의 버튼마다 에 적용됩니다.

반대로 이벤트를 터널링하면 이벤트를 시작한 컨트롤에 도달하기 전에이를 가로 채게됩니다. 예를 들어, 에 내 모든 Window에있는 모든 단추에 대해 사용하지 않으려면 터널링 이벤트로이 작업을 수행 할 수 있으며 단추는 항상 CanExecutefalse을 반환한다는 것을 알 수 있습니다.

관련 문제