Ich habe eine ziemlich komplexe Silverlight 4 Out-of-Browser-Anwendung gemacht. Eines meiner Hauptansichtsmodelle fügt dem Application.Current.MainWindow.Closing-Ereignis einen Ereignishandler hinzu. Dies funktioniert gut, wenn die Anwendung zum ersten Mal ausgeführt wird. Es kann den Schließvorgang abbrechen.MainWindow.Closing-Ereignis nicht immer in Silverlight ausgelöst 4 OOB-App
Jedoch manchmal nach dem Ausführen von Operationen wie Anzeigen und Schließen eines ChildWindow, ruft das Closing-Ereignis von MainWindow nicht mehr mein Handler auf.
Im Debugger habe ich eine Uhr zu dem zugrunde liegenden Closing-Event-Delegaten von MainWindow hinzugefügt. Es ist nicht null, bevor das ChildWindow angezeigt wird. Dann manchmal nachdem das ChildWindow geschlossen ist, ist der Delegat null. Dies erklärt, warum mein Handler nicht mehr angerufen wird. Aber warum wird dieser Delegierte nulled? Und warum passiert es nur gelegentlich? Meine Anwendung löst meinen Ereignishandler zu keinem Zeitpunkt auf.
Dies ist der Delegierte Ich beobachte:
System.Windows.Application.Current.MainWindow.m_closingEvent
Andere Sachen: Ich verwende Caliburn Micro
Klingt wie eine wirklich gute Frage. Die erste Diagnose, die ich verwenden würde, ist eine einfache OOB-App (keine Kalibrierung usw.) zu erstellen, die einfach ChildWindows öffnet und schließt und RootVisuals austauscht, um zu sehen, ob eine einfache Repro erstellt werden kann. – AnthonyWJones
Ok, ich habe das gleiche Problem - sobald ich das ChildWindow nicht öffne/schließe, wird das Closing Event ausgelöst. Manchmal, wenn ich den Debugger angeschlossen habe, wird es auch, aber nicht immer schießen. Ich habe den ApplicationWrapper unten ohne Freude ausprobiert. Irgendwelche Vorschläge?! – Rodney