【发布时间】:2013-03-29 03:40:12
【问题描述】:
我有两个窗口:一个 master 窗口和一个 details 窗口,通过双击主窗口数据网格中的特定行打开。保存详细信息窗口中的数据时,我想刷新主窗口的数据网格控件。
(一些不相关的细节:每个窗口都继承自 BaseWindow 类,并且有自己的继承自 EF5 DbContext 的类的副本。我已将 Save 事件添加到部分类并覆盖 @987654325 @ 在调用 SaveChanges 时引发此事件。这实际上是我要附加事件处理程序的事件。)
我知道我可以通过将事件处理程序附加到Save 事件来做到这一点。但是,我不知道窗口将按什么顺序关闭 - 如果先关闭主窗口,详细信息窗口的实例仍然会保留对它的引用。
如果我监听主窗口的Closing'/'Closed 事件,以便知道何时释放附加到“保存”事件的处理程序,反过来我也会遇到同样的问题——主窗口将持有一个引用即使在详细信息窗口关闭后也可以转到详细信息窗口。
我知道我可以按照here 的描述实现WeakEventManager,但我想知道是否有更简单的技术可以使用。 (有人告诉我我有把事情复杂化的倾向。)
(我没有使用 MVVM。)
【问题讨论】:
标签: wpf events memory-leaks