WPFのバグ?的なものを見つけたので報告
内容
Imageの所属を変えても変わっていなかったようで、もろもろのイベントが現在属しているWindow(あるいはCanvas)上で行われず、前のWindow(あるいはCanvas)上で発生していた。
状況
あるオブジェクトの子オブジェクトとしてImageを持たせて、必要に応じてCanvas上に描画するということをしていた。
MainWindowがあって、その上で別の子WindowをnewしてShowDialogしたものの中にあるCanvas上に、上記のImageを描画
↓
子WindowをCloseしたのち、もう一度子WindowをnewしてShowDialogし、同じように上記のImageを描画
↓
ImageのMouseDownイベントを実行したのち、CanvasのMouseMoveイベントで操作を行うようにしていたところ、うまく動作しない(イベントを書いているのはいずれもCanvasのコードの中)
↓
ImageのMouseDownイベント上とCanvasのMouseMoveイベント上でGetHashCodeをしてその値を見比べてみたところ、それぞれ違う値が返ってきていた
↓
さらに調べてみたところ、ImageのMouseDown上でGetHashCodeをした値は初めの子Window上で見た時と変わっていなかった
解決
Imageを持っているオブジェクトに、Imageを再読み込みするという関数を用意し、子WindowのClosingイベントの中で呼び出すようにしたところ上記のバグ?は解決した
結論
これがバグであるかどうかは微妙だけど、Imageを複数の親の間で使いまわしするなってことだろう