gue*_*est 8 c# wpf wpf-controls
我需要在卸载 wpf 用户控件之前执行代码并在满足某些条件时取消卸载并使控件在 ui 中保持当前状态打开...
有什么办法可以做到这一点吗?我看不到卸载事件之类的东西?谢谢,
Unloaded
从 WPF 可视化树中删除控件时触发。据我所知,没有“卸载”事件,我认为,在 Windows 窗体中。但是,“卸载”并不意味着控件被销毁,只是它从可视化树中删除。
在代码中的单独位置保留对该控件的引用,以及有关其父控件的一些元数据。您可以通过Parent
在Initialized
事件处理程序中存储对该属性的引用来收集该元数据。
然后,当Unloaded
被调用时,在Unloaded
事件处理程序中进行测试,如果满足条件,则将控件重新插入逻辑树中。该ContentControl
班有一个明确的AddChild
,你可以调用受保护的方法。
可能有一些副作用需要注意;根据文档,Unloaded
在操作系统级别更改主题时调用,当 WPF 可视化树重新构建自身时。