RooutedEvents
-
Was braucht man damit RoutedEvents gerouted werden?
Mein Problem:
Ich hab UserControl_1 mit einem RoutedEvent. Wenn ich das in ein Windows packe kann ich auch auf das Event reagieren. So weit so gut.Mache ich jetzt ein UserControl_2, das UserControl_1 enthält und packe das ins Window, dann kennt Window das RoutedEvent von UC1 nicht. Wieso, es sollte doch gerouted werden?
-
Window selber kennt es nicht, das ist normal, da es ja nicht sein Event ist
Was hast du vor?Mit
myWindow.AddHandler(MyUserControl.MyRoutedEvent, new RoutedEventHandler(OnMyRoutedEvent));
kannst du n routed event der childs fangen.
-
Danke, jetzt ist der Knoten in meinem Hirn gelöst.
-
Wie kommt es, daß bwi einem Window, das eine Listbox enthält, das Window von den MousButtonEvents der LB alles durchgeroutet bekommt? Ich hatt zuerst gedacht, wenn ich ein RoutedEvent ganz unten in der Hierarchie definiere kennen es die "oberen" automatisch.
-
Es wird alles durch gerouted, das ist korrekt. Aber nur der owner des Controls kennt es tatsächlich.
Sobald du selber ein EventHandler setzt, also das Event fangen möchtest, wird intern dieses AddHandler aufgerufen, somit lauscht das Window dann aktiv auf dieses Event.Manche AddHandler werden auch durch Templates gesetzt.