问题解决了,发现当自定义控件的主容器没有设置背景色(背景透明)时,在自定义控件主容器上的移动 不会触发MouseEnter和MouseLeave,然后进入用户控件的子控件时,才会触发Enter,离开子控件触发Leave,这样会触发多次,并且通过e.Handled无法阻止冒泡到 用户控件的MouseEnter和Leave,并且e.OriginalSource 始终是指代用户控件。但是设置背景后,情况就是只要移入自定义控件,就只冒泡一次,在子控件之间切换不会再次冒泡
e.Handled = true;
子控件在没有注册事件MouseEnter和MouseLeave的情况下呢?
子控件有很多层 不想遍历去注册事件
@天浩-Jeffery: 在你的自定义控件中设置 e.Handled = true,看能否通过 sender 和 MouseButtonEventArgs 来判断出是否需要设置 e.Handled = true.
可以通过 e.OriginalSource 判断事件是由谁触发的