0

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

对导致触发器本身的东西进行动画处理很容易。对与触发器对象分开的东西进行动画处理似乎更困难,但随后又覆盖了触发器对象。

有任何想法吗?

4

2 回答 2

1

看一下 IsHitTestVisible="False" 属性,您可以在应该飞入的矩形上设置它以防止它接受鼠标输入。

于 2012-06-11T08:06:27.857 回答
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);
    }
于 2012-06-11T18:35:25.880 回答