我了解弱引用和弱事件模式。
使用弱事件模式的一个地方是在控件和数据模型之间的数据绑定中。在DataBinding过程中,如果DataModel支持INotifyPropertyChange,Control会通过事件请求DataModel通知他改变。如果没有弱事件,DataModel 将在控件上保留一个硬引用。由于该引用,无法在窗口变为可用于 GC 的同时将控件标记为可用于 GC。
微软决定使用弱引用来解决这个问题。
我想知道像提议的其他替代方案是否会更好?
替代方案:使用传递其子 UiElements 的代码在 Window 上实现 IDisposable 以要求他们将其 DataBinding 删除到 DataModel ?该解决方案有什么问题?