В wpf, там способ выполнить код, прежде чем управление будет разгружено …? как, возможно, разгружающееся событие?

Я должен выполнить код, прежде чем wpf пользовательский элемент управления будет разгружен, и отмените разгрузку, если определенные условия соблюдены и удерживают контроль открытый в ее текущем состоянии в ui...

Есть ли какой-либо способ, которым я могу выполнить это? Я не мог видеть ничего как разгрузка события?Спасибо,

5
задан Bill the Lizard 15 March 2011 в 14:50
поделиться

2 ответа

Unloaded запускается, когда элемент управления удаляется из визуального дерева WPF. Насколько я смог прочитать, события «Выгрузка» не существует, как я думаю, в Windows Forms. Но «Выгружено» не означает, что элемент управления уничтожен, он просто удаляется из визуального дерева.

Храните ссылку на элемент управления в отдельном месте кода вместе с небольшими метаданными о его родительском элементе управления. Вероятно, вы можете собрать эти метаданные, сохранив ссылку на свойство Parent в обработчике событий Initialized .

Затем, когда вызывается Unloaded , выполните свои тесты в обработчике событий Unloaded и, если ваши условия соблюдены, повторно вставьте элемент управления в логическое дерево. Класс ContentControl имеет явный защищенный метод AddChild , который вы можете вызвать.

Вероятно, есть побочные эффекты, которых следует остерегаться; Согласно документации, Unloaded вызывается, когда темы изменяются на уровне ОС, когда визуальное дерево WPF восстанавливается.

5
ответ дан 15 December 2019 в 00:48
поделиться

Существует событие Unloaded на System.Windows.Controls.Control, но я не знаю элегантного способа остановить выгрузку элемента управления с его помощью.

0
ответ дан 15 December 2019 в 00:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: