I need to execute code before a wpf user control is unloaded and cancel the unloading if certain conditions are met and keep the control open in its current state in the ui...
Is there any way I can accomplish this? I couldnt see anything like unloading event? Thanks,
Unloaded
is fired when the control is removed from the WPF visual tree. As far as I've been able to read there is no "Unloading" event as there is, I think, in Windows Forms. But, "Unloaded" doesn't mean that the control is destroyed, just that it's removed from the visual tree.
Keep a reference to the control in a separate place in your code, along with a little bit of metadata about its parent control. You can probably collect that metadata by storing a reference to the Parent
property in your Initialized
event handler.
Then, when Unloaded
is called, make your tests in the Unloaded
event handler, and if your conditions are met, re-insert the control into the logical tree. The ContentControl
class has an explicit AddChild
protected method you could call.
There are probably some side effects to watch out for; According to the documentation, Unloaded
is called when themes are changed at the OS level, when the WPF visual tree reconstitutes itself.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With