鼠标输入命中区域会导致面板飞入并填充命中区域

时间:2012-06-11 03:42:29

标签: wpf events animation mouse

我觉得我已经尽了一切努力使这项工作正常进行。我有一个带有MouseEnter和MouseLeave事件的矩形,它会导致飞入动画启动和停止。问题是,当飞入到达时,它覆盖矩形,并导致MouseLeave事件触发,因为鼠标不再在矩形上。该面板从屏幕外开始,并将scaleTransform和translateTransform应用为动画。一切都在Blend中完成。

动画触发器本身的动画很容易。动画似乎更难以触发对象的动画,但随后会覆盖触发器对象。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

看看IsHitTestVisible =“False”属性,你可以在应该飞入的矩形上设置它,以防止它输入鼠标。

答案 1 :(得分:0)

所以我通过每次为矩形命中区域和面板调用MouseEnter和MouseLeave时检查IsMouseOver属性来解决它。

    private bool isMouseOverRightPanelOrHitRect()
    {
        if (mRightPanel.IsMouseOver || rightHitRect.IsMouseOver)
            return true;
        return false;
    }

    private void handleRightPanelAnimation(object sender, MouseEventArgs e)
    {
        if (isMouseOverRightPanelOrHitRect())
            mRightPanel_FlyOn();
        else
            mRightPanel_FlyOff();
    }

    private void mRightPanel_FlyOn()
    {
        if (!mRightPanel.Docked)
            VisualStateManager.GoToElementState(mCanvas, rightOn.Name, true);
    }

    private void mRightPanel_FlyOff()
    {
        if (!mRightPanel.Docked)
            VisualStateManager.GoToElementState(mCanvas, rightOff.Name, true);
    }