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 に答える