如何使用Caliburn在ViewModel上运行代码.当窗口关闭时微信号
本文关键字:窗口 信号 微信 代码 Caliburn 何使用 ViewModel 运行 | 更新日期: 2023-09-27 18:12:15
我刚开始使用Caliburn.micro。我有一个简单的应用程序,它启动一个进程,在ViewModel中运行,监听一些网络消息。当窗口关闭时,我想停止视图模型中的进程不再监听。
既然视图是一个UserControl,我怎么能告诉窗口正在关闭,所以我的ViewModel可以正确清理?
如果你的视图模型实现了IScreen
,你可以覆盖OnDeactivate
(或者,如果你想有一些逻辑准备好,从Screen
继承)。当屏幕被停用时,该方法将被调用,如果屏幕只是停用或关闭,也有bool
标志。
请注意,只有来自引导程序中选择的IoC容器的视图模型将会把他们的一生正确地连接起来。如果你这样得到VM,它会正确地调用OnInitialize
, OnActivate
和OnDeactivate
。如果你以任何其他方式实例化视图模型(例如手动),并且你在Conductor
中使用它们,你就不走运了…
虽然我认为,如果你使用IWindowManager
与视图模型实现IScreen
,它将试图强制执行常规的生命周期
除了"Trust me - I'm a Doctor"所说的,我还建议大家看看IDeactivate
的界面。
你可以实现那个接口,有一个Deactivate
方法,并实现你需要的一切。
Caliburn生命周期文档