背景色と子の可視性の一部を変更するために、独自の MouseLeave をリッスンする UserControl があります。可視性を失う必要がある子も、背景色を変更するために独自の MouseLeave をリッスンします。
すべてが機能するシナリオは次のとおりです。
- マウスを UserControl に移動します。
- マウスを子に移動します。
- マウスを Child から UserControl に移動します。
問題のあるシナリオは次のとおりです。
- マウスを UserControl に移動します。
- マウスを子に移動します。
- マウスを Child の外に移動します。UserControl の中ではなく、直接その外側に移動します。
このシナリオは、子が UserControl の一番端にあるため、常に発生します。UserControl の MouseLeave が起動しないだけでなく、Child の MouseLeave も起動しないことに注意してください。
この場合、マウスが実際に領域を離れたかどうかを調べるには、他のコントロールの MouseEnter をリッスンしてから、UserControl と Child に通知する必要がありますが、このソリューションは見苦しく、オブジェクト指向ではないため、本当に避けたいと考えています。 .
また、子は UserControl の一番端に配置する必要があり、移動できません。
誰でも問題のきちんとした解決策を思いつくことができますか?