我正在研究如何开始使用MVVM Light,并遇到了“新”的ICleanup接口。我想知道什么时候清理VM...当您从页面导航离开时吗?
此外,我看到ViewModelLocator中有一个Main Cleanup,它应该清理所有的VM...什么时候会使用它?
非常感谢。
敬礼, Mauro
此外,我看到ViewModelLocator中有一个Main Cleanup,它应该清理所有的VM...什么时候会使用它?
非常感谢。
敬礼, Mauro
ICleanup
接口相对于之前的IDispose
实现的优点在于,可以更频繁地调用它而不标记VM为已释放。这意味着你应该在需要注销VM的消息处理时调用ICleanup.Cleanup
。当然,在这种情况下,你需要有一个方法,在以后需要时重新注册所有消息处理程序。IDispose
处理VM清理的方式,特别是因为我倾向于使用IOC容器。但是,我能够看到Laurent的观点,并且在VM上实现IDisposable
并调用Cleanup
并不是什么特技。public MyView() {
this.Unloaded += (o, e) => { Messenger.Unregister(this); }
}