编程语言
首页 > 编程语言> > c# – 在wpf中,有没有办法在卸载控件之前执行代码…?比如可能是卸货事件?

c# – 在wpf中,有没有办法在卸载控件之前执行代码…?比如可能是卸货事件?

作者:互联网

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

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

解决方法:

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

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

然后,当调用Unloaded时,在Unloaded事件处理程序中进行测试,如果满足条件,则将控件重新插入逻辑树. ContentControl类具有可以调用的显式AddChild保护方法.

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

标签:c,wpf,wpf-controls
来源: https://codeday.me/bug/20190701/1342246.html