2011-04-24 2 views
1

WPF 또는 Silverlight GUI 클래스와 관련이없는 표준 클래스의 사용자 지정 계층을 가질 수 있으며이 계층 구조에 대한 버블 링 및 이벤트 조정을 설정할 수 있습니까? 어떻게? XAML 클래스뿐 아니라 표준 클래스에 대한 이벤트 버블 링 및 이벤트 튜링을 설정할 수 있습니까?

난 아무것도 정말 http://msdn.microsoft.com/en-us/library/system.windows.uielement_events.aspx

+0

제공된 링크를 따르십시오. 첫 번째 링크 인 DragEnter를 따라 가십시오. "Routing Strategy"섹션을보고 "Bubbling"이라는 단어를 찾습니다. –

답변

1

EventManager 클래스가 제공하는 기능과 비슷한 것을 만들지 않는 한 .net 프레임 워크를 사용할 수 없습니다. 구현을 시작했다고 가정 해 보겠습니다. 그런 다음 &을 개체 그래프로 트래버스해야합니다 (클래스 계층 구조가 트리가 아닌 경우). 이를 위해 어떤 오브젝트가 실제로 트리의 일부인지 아닌지를 식별해야합니다.

class A 
{ 
    public B b; 
} 

class B 
{ 

} 


B b1 = new B(); 
A a1 = new A() { b = b1 }; 
A a2 = new A() { b = b1 }; 

가정하자 B1은 버블 링 이벤트를 발생 :
는 다음과 같은 있다고 가정합시다. 어떤 부모에게 거품을 일으켜야합니까? a1 또는 a2? 버블 링 & WPF에서 터널링 & 위의 시나리오와 같은 그래프가 아닌 트리에있는 UIElements가 있기 때문에 Silverlight가 작동합니다. 그러나 임의의 클래스 hierachies는 나무가 아닌 그래프입니다. 그럼 비슷한 것을 구현하기 시작하면 다음과 비슷한 트리 클래스에서만 작동합니다.

class Node 
{ 
    Node parent; 
    //other members 
} 

그러면 "부모"속성을 사용하여 항상 버블 링하는 방법을 알 수 있습니다.

그러나, 당신이 당신의 개의 EventManager 구현을 시작하기 전에, 당신이 RoutedEvents이 무엇인지 다시 한번을 제안하고 무엇을 사용하는 시나리오입니다 : http://msdn.microsoft.com/en-us/library/ms742806.aspx 라우팅 이벤트가 유용 할 곳 또한 어쩌면 당신은 시나리오를 제공 할 수 RoutedEvents에 대한 대안을 찾을 수 있는지 알아보기위한 표준 (비 - ui) 클래스 계층 (트리)입니다.

+0

안녕하세요. 비 시각적 인 클래스의 계층 구조를 만들지 않을 이유가 없으므로 라우트 된 이벤트도 유용 할 수 있습니다. – user310291

2

라우팅 이벤트 개체가 그것이 GUI 제어 할 수있는 거의 destines UIElement 클래스에서 상속해야 버블 링 또는 터널링 관련이 표시되지 않는 이벤트를 찾고 있습니다.

이러한 모든 클래스 (C#/VB/...) 코드에서 인스턴스화 할 수 있습니다. XAML은 선언적으로 개체를 정의하는 편리한 방법을 제공하며 코드 뒤에 수행 할 수없는 작업은 수행하지 않습니다.

+0

이벤트를 볼 때 고마워요. 버블 링이나 터널링과 관련된 내용이 없습니다. http://msdn.microsoft.com/en-us/library/system.windows.uielement_events.aspx – user310291

+1

@ user310291 키는 [AddHandler ] (http://msdn.microsoft.com/en-us/library/ms598898.aspx) 메서드 및 사실 UIElement 알고있는 요소 계층 구조 ([Visual] (http://msdn.microsoft. com/ko-ko/library/system.windows.media.visual.aspx)). –

관련 문제