Ein gängiges Szenario, mit dem wir uns in unserer aktuellen Anwendung befassen, ist, wo wir mehrere Klassen routen und Ereignisse durchführen müssen.Routing eines Ereignisses durch mehrere Klassen in C#
Hier ist eine Beispiel Klassenhierarchie.
Action Mainwindow PresentationManager MenuManager Menü MenuButton
Das Menü abonniert dem Click-Ereignis eines MenuButton. Es erstellt dann ein CustomAction-Objekt und löst ein Ereignis aus, das für MenuManager abonniert ist. Im Ereignismanager MenuManager wird wiederum ein Ereignis ausgelöst, das vom PresentationManager abonniert wurde, und so weiter.
Hier ist ein Beispiel dessen, was für die PresentationManager implementiert:
void MenuManager_ActionGenerated(object sender, CustomActionEventArgs e)
{
if (ActionGenerated != null)
ActionGenerated(sender, e);
}
Ich hatte gehofft, dass es eine Möglichkeit wäre, dass ich das Ereignis in der Menüebene erhöhen könnte und sie in der Action Ebene erhalten.
Ist es eine schlechte Übung, was ich gerade mache?
Siehe diesen Artikel: http://weblogs.asp.net/vblasberg/archive/2010/03/30/wpf-routed-events-bubbling-several-layers-up .aspx – Diego