protected override void OnMouseMove(MouseEventArgs e) { var newMouseMoveOnElement = safeGetElement(HitVisual(e.GetPosition(this))); if (!Equals(_mouseMoveOnElement, newMouseMoveOnElement)) { if (_mouseMoveOnElement != null) { _mouseMoveOnElement.OnMouseLeave(e); } if (newMouseMoveOnElement != null) { newMouseMoveOnElement.OnMouseEnter(e); } } if (_mouseMoveOnElement != null) { _mouseMoveOnElement.OnMouseMove(e); } _mouseMoveOnElement = newMouseMoveOnElement; base.OnMouseMove(e); }