При переходе на другую страницу - это просто, вы обрабатываете NavigatingFrom
/NavigatedTo
. Когда нет - это также просто - вы не должны получать эти события, и поэтому в большинстве случаев вам нечего делать. Я видел, что NavigatingFrom
был поднят, хотя в определенных обстоятельствах, когда приложение приостанавливалось, и состояние навигации считывалось с Frame
, даже если техническая навигация в приложении не происходила и не было никакого события NavigatedTo
в резюме. Вы можете отфильтровать это, установив и очистив некоторый флаг в событии Suspending
(или Application.OnSuspending
) до и после NavigatingFrom
, а затем проигнорируйте его на странице NavigatingFrom
обработчик для определенного кода. Вероятно, вы все равно хотите сохранить состояние страницы в этом событии, но не отказаться от подписки на другие события, если приложение возобновится до его завершения.
Application.Suspending/Resuming
- это некоторые события, которые могут вас заинтересовать, чтобы сохранить/загрузить общее состояние приложения или обновить данные, хотя, возможно, и меньше для подписки/отмены подписки на события, так как большинство из них должно быть в порядке, если оставить приложение приостановлено которое происходит при переключении в другое приложение.
Page.Loaded/Unloaded
события - это те, которые вы бы обработали, если хотите прикоснуться к частям пользовательского интерфейса, которые необходимо фактически загрузить в визуальное дерево, поскольку NavigatedTo
происходит до загрузки страницы.
Спасибо Filip за подробности – user4126589