【发布时间】:2015-06-27 07:07:37
【问题描述】:
如果我将Window 的DataContext 设置为实现IDisposable 的东西,当Window 关闭时它会是Dispose()d 吗?
【问题讨论】:
标签: .net wpf resource-management
如果我将Window 的DataContext 设置为实现IDisposable 的东西,当Window 关闭时它会是Dispose()d 吗?
【问题讨论】:
标签: .net wpf resource-management
不!
WPF 根本没有真正使用IDisposable 接口——编写依赖它的 WPF 代码可能有点棘手。
考虑使用类似Caliburn Micro 的东西,这是一个支持匹配视图和视图模型(分配给DataContext)的MVVM 框架,确实支持自动调用Dispose()。但是,在不了解您的具体情况的情况下,CM 可能超出您的场景所需。
如果您对为什么 WPF 不使用IDisposable 感兴趣,StackOverflow 上有几篇帖子like this one 解决了这个问题。虽然这讨论了为什么不释放控件本身,但基本原理也适用于 DataContext,因为它只是控件的继承属性。
【讨论】:
Window 的Closed 事件触发时,我最终只是清理了资源。