PropertyChangedEventHandler是否可以防止我的自定义控件被垃圾收集

本文关键字:自定义控件 我的 是否 PropertyChangedEventHandler | 更新日期: 2023-09-27 18:23:52

我对WPF还很陌生,我想知道监听属性更改会防止我的自定义控件被垃圾收集。。。

本质上,我听这样的事件:

obj.PropertyChanged += this.The_PropertyChanged;

我担心在obj仍然存在的情况下,我执行代码的控件不能被垃圾收集,因为obj.PropertyChanged保存了对this的引用。这是正确的吗?如果是,避免这种情况的正确方法是什么?如果我得到了正确的通知,当从屏幕上删除控件时,没有可以重写的Dispose()方法可以调用,因此没有明显的位置可以从obj.PropertyChanged中删除this.The_PropertyChanged。。。

PropertyChangedEventHandler是否可以防止我的自定义控件被垃圾收集

是的,你是对的。obj将引用"this",因此"this"不会被垃圾收集。解决方案是:

obj.PropertyChanged -= this.The_PropertyChanged;

您可以将该代码放置在"this"为Closed、Disposed或其他将不再存在的位置。

因此,对于控件,如果承载控件的窗口关闭,则可能是放置代码的位置。