我觉得我已经尽了一切努力使这项工作正常进行。我有一个带有MouseEnter和MouseLeave事件的矩形,它会导致飞入动画启动和停止。问题是,当飞入到达时,它覆盖矩形,并导致MouseLeave事件触发,因为鼠标不再在矩形上。该面板从屏幕外开始,并将scaleTransform和translateTransform应用为动画。一切都在Blend中完成。
动画触发器本身的动画很容易。动画似乎更难以触发对象的动画,但随后会覆盖触发器对象。
有什么想法吗?
答案 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);
}