Unloaded
запускается, когда элемент управления удален из визуального дерева WPF. Насколько я смог прочитать, события "Unloading" нет, как, я думаю, в Windows Forms. Но «Unloaded» не означает, что элемент управления уничтожен, просто он удален из визуального дерева.
Храните ссылку на элемент управления в отдельном месте в вашем коде вместе с небольшим количеством метаданных о его родительском элементе управления. Вероятно, вы можете собрать эти метаданные, сохранив ссылку на свойство Parent
в обработчике событий Initialized
.
Затем, когда вызывается Unloaded
, проведите тесты в обработчике событий Unloaded
и, если ваши условия выполнены, повторно вставьте элемент управления в логическое дерево. Класс ContentControl
имеет явный защищенный метод AddChild
, который вы можете вызвать.
Возможно, есть некоторые побочные эффекты, на которые стоит обратить внимание; Согласно документации, Unloaded
вызывается, когда темы изменяются на уровне ОС, когда визуальное дерево WPF восстанавливается.