나는 Panel.OnVisualChildrenChanged
가 호출 될 때 화재 연결 가능한 패널 이벤트 만들고 싶습니다 :연결된 이벤트 처리기를 발생시키는 방법은 무엇입니까?
public class PanelObserver {
public static readonly RoutedEvent VisualChildrenChangedEvent;
static PanelObserver() {
VisualChildrenChangedEvent = EventManager.RegisterRoutedEvent(
"VisualChildrenChanged",
RoutingStrategy.Bubble,
typeof(RoutedEventHandler),
typeof(Panel));
}
public static void AddVisualChildrenChangedHandler(
DependencyObject d, RoutedEventHandler handler) {
//Something needs to be done to d so that when OnVisualChildrenChanged is called,
//it will fire handler.
(d as Panel)?.AddHandler(VisualChildrenChangedEvent, handler);
}
public static void RemoveVisualChildrenChangedHandler(
DependencyObject d, RoutedEventHandler handler) {
//Something will likely need to be done to d here as well...
(d as Panel)?.RemoveHandler(VisualChildrenChangedEvent, handler);
}
}
유스 케이스가 될 것이다 꽤 똑바로 앞으로 이상적으로 이벤트가 Panel.OnVisualChildrenChanged
가 될 때마다 제기 될
<Grid myns:PanelObserver.VisualChildrenChanged = "SomeEventHandler" />
라는. 가능한 경우이를 실현하기 위해 AddVisualChildrenChanged
메소드에 추가 할 필요가있는 것은 무엇입니까 (그리고 그것은 대장입니다)? 그것이 이것이 어떻게 성취하는 것이 아니라면, 이것을 성취 할 수있는 적절한 방법은 무엇입니까?
감사합니다. 이것은 매우 어리 석다. .Net 팀에 의해 패널 내용의 변경을 감지하는 방법을 사용하지 않는 것은 상당히 중요한 감독 인 것 같습니다. – Will