WPF Popup Closing Animatiom

时间:2018-06-08 17:53:19

标签: c# wpf

 <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关闭?

1 个答案:

答案 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();

如果可以,请使用装饰器而不是弹出窗口。在那里,您可以根据需要设置动画。或者,使用淡入淡出动画进行弹出窗口。