我在 SL 4.0 中做了一些 MVVM 工作,并且我有一个永远不会被调用的事件处理程序,尽管事件触发并且是非空的。
首先,我附加了事件处理程序。我逐步完成了这个,并注意到在添加事件处理程序之后,PropertyChanged 不再为空,但是,它的 invocationCount 仍然是 0,它的 invocationList 仍然是空的。这不是预期的吧?
node.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(OnMonitoredDataSourceNodePropertyChanged);
接下来,我更改一个属性,并调用我的 OnPropertyChanged 方法,如下所示:
OnPropertyChanged("CheckState");
触发该方法。我逐步完成,在检查 PropertyChanged 事件时,它不是预期的 NULL,但是它的 invocationCount 为 3,并且 invocationList 有 4 个对象,其中最后一个是 NULL。这对我来说毫无意义,应该只有之前分配的 1 个处理程序。相反,它是其他一些列表,并且不包括我的原始处理程序。
public void OnPropertyChanged(string propertyName) {
if (this.PropertyChanged != null) {
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
因此,PropertyChanged 被触发,但我的处理程序从未被调用。在这个问题上,我一直在用头撞墙几个小时,感谢您的帮助。