如何使用Caliburn在ViewModel上运行代码.当窗口关闭时微信号

本文关键字:窗口 信号 微信 代码 Caliburn 何使用 ViewModel 运行 | 更新日期: 2023-09-27 18:12:15

我刚开始使用Caliburn.micro。我有一个简单的应用程序,它启动一个进程,在ViewModel中运行,监听一些网络消息。当窗口关闭时,我想停止视图模型中的进程不再监听。

既然视图是一个UserControl,我怎么能告诉窗口正在关闭,所以我的ViewModel可以正确清理?

如何使用Caliburn在ViewModel上运行代码.当窗口关闭时微信号

如果你的视图模型实现了IScreen,你可以覆盖OnDeactivate(或者,如果你想有一些逻辑准备好,从Screen继承)。当屏幕被停用时,该方法将被调用,如果屏幕只是停用或关闭,也有bool标志。

请注意,只有来自引导程序中选择的IoC容器的视图模型将会把他们的一生正确地连接起来。如果你这样得到VM,它会正确地调用OnInitialize, OnActivateOnDeactivate。如果你以任何其他方式实例化视图模型(例如手动),并且你在Conductor中使用它们,你就不走运了…

虽然我认为,如果你使用IWindowManager与视图模型实现IScreen,它将试图强制执行常规的生命周期

除了"Trust me - I'm a Doctor"所说的,我还建议大家看看IDeactivate的界面。

你可以实现那个接口,有一个Deactivate方法,并实现你需要的一切。

Caliburn生命周期文档