<Popup
AllowsTransparency="True"
Focusable="False"
PopupAnimation="Slide"
Width="{Binding ElementName=grid,Path=ActualWidth}"
Height ="{Binding ElementName=grid,Path=ActualHeight}"
Name="popup"
Placement="Relative"
PlacementTarget="{Binding grid}" >
</Popup>
当我将IsOpen属性设置为True时,此弹出窗口将完美地通过幻灯片动画打开。但是为什么Popup会立即关闭而没有任何动画。 有没有办法让Popup关闭?
答案 0 :(得分:0)
当前的WPF实现仅支持关闭弹出窗口的PopupAnimation.Fade
动画。
您可以在source code:
中查看此内容if (animation == PopupAnimation.Fade)
{
_popupRoot.Value.SetupFadeAnimation(AnimationDelayTime, visible);
return true;
}
else if (visible) // only translate when showing popup
{
// translate the content
_popupRoot.Value.SetupTranslateAnimations(animation, AnimationDelayTime, AnimateFromRight, AnimateFromBottom);
return true;
}
对于PopupAnimation.Fade
,显示和关闭都是动画的。对于其他动画类型,仅动画visible
(显示)状态。
您无法更改此行为。您当然可以在您的内容中附加自定义动画,但弹出窗口无论如何都会立即关闭,因此您无法看到它:
if (!animating)
_secHelper.HideWindow();
如果可以,请使用装饰器而不是弹出窗口。在那里,您可以根据需要设置动画。或者,使用淡入淡出动画进行弹出窗口。