在wpf中,有没有办法在卸载控件之前执行代码......?比如卸载事件?

gue*_*est 8 c# wpf wpf-controls

我需要在卸载 wpf 用户控件之前执行代码并在满足某些条件时取消卸载并使控件在 ui 中保持当前状态打开...

有什么办法可以做到这一点吗?我看不到卸载事件之类的东西?谢谢,

Rob*_*ins 5

Unloaded从 WPF 可视化树中删除控件时触发。据我所知,没有“卸载”事件,我认为,在 Windows 窗体中。但是,“卸载”并不意味着控件被销毁,只是它从可视化树中删除。

在代码中的单独位置保留对该控件的引用,以及有关其父控件的一些元数据。您可以通过ParentInitialized事件处理程序中存储对该属性的引用来收集该元数据。

然后,当Unloaded被调用时,在Unloaded事件处理程序中进行测试,如果满足条件,则将控件重新插入逻辑树中。该ContentControl班有一个明确的AddChild,你可以调用受保护的方法。

可能有一些副作用需要注意;根据文档,Unloaded在操作系统级别更改主题时调用,当 WPF 可视化树重新构建自身时。