Я сделал довольно сложное приложение Silverlight 4 вне браузера. Одна из моих основных моделей представлений добавляет обработчик событий к событию Application.Current.MainWindow.Closing. Это отлично работает, когда приложение изначально запускается. Он может отменить операцию закрытия.MainWindow.Closing событие не всегда поднимается в Silverlight 4 OOB-приложение
Однако иногда после выполнения операций, таких как показ и закрытие ChildWindow, событие закрытия MainWindow больше не вызывает мой обработчик.
В отладчике я добавил часы к главному делегату события MainWindow. До появления ChildWindow это не имеет значения null. Затем иногда после закрытия ChildWindow делегат имеет значение NULL. Это объясняет, почему мой обработчик больше не вызван. Но почему этот делегат становится нулевым? И почему это происходит иногда? Мое приложение не отвязывает мой обработчик событий в любой момент.
Это делегат я смотрю:
System.Windows.Application.Current.MainWindow.m_closingEvent
Другие вещи: Я использую Caliburn Micro
Звучит как действительно хороший вопрос. Первая диагностика, которую я бы использовал, - это создать простое приложение OOB (без калибровки и т. Д.), Которое просто открывает и закрывает ChildWindows и сворачивает RootVisuals, чтобы увидеть, можно ли создать простой реестр. – AnthonyWJones
Хорошо, у меня такая же проблема - как только я не открываю/закрываю ChildWindow, срабатывает событие Closing. Иногда, если у меня есть отладчик, он также срабатывает, но не всегда. Я попробовал ApplicationWrapper ниже без радости. Какие-либо предложения?! – Rodney