WPF Windows Dispose() 他们的 DataContexts 吗?

Do WPF Windows Dispose() their DataContexts?

如果我将 WindowDataContext 设置为实现 IDisposable 的东西,当 Window 关闭时它会是 Dispose()d 吗?

没有!

WPF 根本不真正使用 IDisposable 接口 — 编写依赖它的 WPF 代码可能有点棘手。

考虑使用 Caliburn Micro 之类的东西,一个支持匹配视图和视图模型的 MVVM 框架(分配给 DataContext)并且 支持自动调用 Dispose()。但是,在不知道您的具体情况的情况下,CM 可能比您的场景需要的多一些。

如果您对为什么 WPF 不使用 IDisposable 感兴趣,Whosebug like this one 上有几篇文章可以解决这个问题。虽然这讨论了为什么不处置控件本身,但基本原理也适用于 DataContext,因为它只是控件的继承 属性。