gpt4 book ai didi

mvvm-light - 何时在 MVVM Light 中处理 ViewModel

转载 作者:行者123 更新时间:2023-12-04 17:56:51 24 4
gpt4 key购买 nike

我正在考虑开始使用 MVVM Light,并且遇到了"new"ICleanup 界面。我只是想知道你什么时候清理虚拟机......当你离开页面时?

另外,我看到 ViewModelLocator 中有一个 Main Cleanup 应该清理所有 VM ......什么时候使用它?

非常感谢

问候,
毛罗

最佳答案

ICleanup 的优势IDispose 上的接口(interface)正如 Laurent 所说,实现(以前存在)是您可以更频繁地调用它,而无需将 VM 标记为已处置。这意味着,您应该调用 ICleanup.Cleanup每当您想要/需要取消注册 VM 的消息处理时。显然,在这种情况下,您需要有一个方法来在以后需要它们时再次注册所有消息处理程序。

就个人而言,我更像是 IDispose 的 friend 。处理 VM 清理的方式,尤其是当我倾向于 IOC 容器时。但是,我可以看到 Laurent 的案例并实现 IDisposable调用Cleanup在虚拟机上并不是什么诡计。

通常,处置/清理 VM 的时间点取决于它的实例化方式和对象的生命周期。这些决定取决于您的应用程序设计,并且没有明确的指导 你应该这样做。但请记住,它 每当您在 View 模型中注册消息处理程序时就完成 - 在其他情况下,它不是严格需要的。

在谈论消息处理程序时,不要忘记在您的 View 中取消注册它们,当您在那里注册了消息处理程序时(参见 this post )。 - 再三考虑,我将代码放在这里以使其清楚并以供将来引用:

在您的 View 的构造函数中的代码隐藏文件中添加以下代码,以确保在卸载 View 时释放已注册的消息处理程序:

public MyView() {
this.Unloaded += (o, e) => { Messenger.Unregister(this); }
}

关于mvvm-light - 何时在 MVVM Light 中处理 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7036873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com