2009-08-26 49 views
8

我有一个ObservableCollection财产ClassA,实现了INotifyPropertyChanged接口WPF何时订阅PropertyChanged事件?

在我的窗口代码隐藏

我已经声明了一个ClassA variable,并在main()方法进行初始化。

我期望variable.PropertyChanged将有一台连接到它一个WPF事件,但显然PropertyChanged事件保持为空

回答

9

在绑定到你的对象WPF将订阅PropertyChanged事件。这是数据绑定工作的核心方式。

它实际上是通过PropertyChangedEventManager使用WPF中的WeakEvent pattern来实现的。

+0

所以......被丢弃绑定时,WPF也将取消(从而避免内存泄漏)? – 2012-03-20 18:46:12

+1

@NéstorSánchezA。它使用弱事件模式来避免内存泄漏。一般来说,由于WPF绑定,你不应该有泄漏问题。 – 2012-03-20 19:03:23

1

我不确定这是否完全回答你的问题,但我有类似的经历,并且有关于此的博客here

从本质上讲,确保当绑定发生在DataContext不为空,这样的PropertyChanged事件可以得到回UI ...