さっきの続き
すこしわかったかも。
データをバインドする前に、PropertyChanged イベントに独自のハンドラを追加すると発生する。
データをバインドした後に、PropertyChanged イベントに独自のハンドラを追加しても発生しなかった。
public Page2(Page parent) { InitializeComponent(); this.parent = parent; var d = new Data(); // バインド前に実行 d.Initialize(); // 独自のイベントを追加する処理 d.ResumeValidation(); this.DataContext = d; // バインド後に実行 // d.Initialize(); // 独自のイベントを追加する処理 }
データのバインドをする前に、独自のハンドラを追加した場合の PropertyChanged イベントの登録されてる デリゲートの中身。
んで、実際走った デリゲードの中身。
次が、データのバインドをした後に、独自のハンドラを追加した場合の PropertyChanged イベントの登録されてる デリゲートの中身。
んで、実際走った デリゲードの中身。
違いは、PropertyChanged イベントに登録されているデリゲードの順番と、実際に走ったデリゲードの中身。
バインドするより前に独自のハンドラを追加した場合、実際に走ったデリゲードの
_notifyPropertyChanged、_weakBindingExpression、Source が null になっている。
多分これのせいで、NullReferenceException が発生してるんだと思う。
ただ、何でこうなるのかは分からない。
http://silverlight.net/forums/t/58548.aspx の英語が読めたら少しはわかるのかも。