He creado una aplicación bastante compleja de Silverlight 4 fuera del navegador. Uno de mis modelos de vistas principales agrega un controlador de eventos al evento Application.Current.MainWindow.Closing. Esto funciona bien cuando la aplicación se ejecuta inicialmente. Puede cancelar la operación de cierre.Evento MainWindow.Closing no siempre se plantea en la aplicación OOB de Silverlight 4
Sin embargo, a veces después de realizar operaciones como mostrar y cerrar un ChildWindow, el evento Closing de MainWindow ya no llama a mi controlador.
En el depurador, agregué un reloj al delegado de evento de cierre subyacente de MainWindow. No es nulo antes de mostrar ChildWindow. Luego a veces después de que ChildWindow está cerrado, el delegado es nulo. Esto explica por qué mi controlador no se llama más. Pero, ¿por qué se anula este delegado? ¿Y por qué solo está sucediendo ocasionalmente? Mi aplicación no desvincula mi controlador de eventos en ningún momento.
Este es el delegado estoy viendo:
System.Windows.Application.Current.MainWindow.m_closingEvent
Otras cosas: estoy usando Caliburn Micro
Parece una muy buena pregunta. El primer diagnóstico que utilizaría es crear una aplicación OOB simple (sin calibración, etc.) que simplemente abra y cierre ChildWindows y canjee RootVisuals para ver si se puede crear una reproducción simple. – AnthonyWJones
Ok, tengo el mismo problema: tan pronto como no abro/cierro ChildWindow, el evento Closing se dispara. Algunas veces, si tengo el depurador conectado, también se activará pero no siempre. Probé el ApplicationWrapper a continuación sin alegría. ¡¿Alguna sugerencia?! – Rodney