SL 4.0でMVVMの作業を少し行っていますが、イベントが発生し、null以外であるにもかかわらず、呼び出されないイベントハンドラーがあります。
まず、イベントハンドラーをアタッチします。私はこれをステップスルーし、イベントハンドラーを追加した後、PropertyChangedがnullではなくなったことに気付きましたが、invocationCountは0のままであり、invocationListはnullのままです。それは期待されていませんよね?
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は起動されますが、ハンドラーが呼び出されることはありません。私はこれで数時間壁に頭を打ちつけてきました、どんな助けでもありがたいです。