WPF:网格可见性淡出不像淡入

WPF: Grid visibility fade out not behave as fade in

所以我有这个 Grid:

<Grid x:Name="notificarionGrid" Visibility="Hidden"/>

我想用动画改变它的 Visibility 值,所以我有这个 2 Storyboard:

<Storyboard x:Key="fadeIn">
            <ObjectAnimationUsingKeyFrames BeginTime="0:0:0" Storyboard.TargetProperty="Visibility">
                <DiscreteObjectKeyFrame KeyTime="0">
                    <DiscreteObjectKeyFrame.Value>
                        <Visibility>Visible</Visibility>
                    </DiscreteObjectKeyFrame.Value>
                </DiscreteObjectKeyFrame>
            </ObjectAnimationUsingKeyFrames>
            <DoubleAnimation BeginTime="0:0:0.0" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:2.0"/>
        </Storyboard>

        <Storyboard x:Key="fadeOut">
            <ObjectAnimationUsingKeyFrames BeginTime="0:0:0" Storyboard.TargetProperty="Visibility">
                <DiscreteObjectKeyFrame KeyTime="0">
                    <DiscreteObjectKeyFrame.Value>
                        <Visibility>Hidden</Visibility>
                    </DiscreteObjectKeyFrame.Value>
                </DiscreteObjectKeyFrame>
            </ObjectAnimationUsingKeyFrames>
            <DoubleAnimation BeginTime="0:0:5.0" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:2.0"/>
        </Storyboard>

后面的代码:

淡入

Storyboard storyboard = Resources["fadeIn"] as Storyboard;
            storyboard.Begin(notificarionGrid);

淡出

Storyboard storyboard = Resources["fadeOut"] as Storyboard;
            storyboard.Begin(notificarionGrid);

唯一的问题是淡出 Grid 会立即消失,不像淡入需要 2 秒。

我做错了什么?

Storyboard:

中删除将 Visibility 属性 设置为 HiddenObjectAnimationUsingKeyFrames
<Storyboard x:Key="fadeOut">
    <DoubleAnimation BeginTime="0:0:0" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:2.0"/>
</Storyboard>

如果在对其 Opacity 属性 设置动画之前隐藏该元素,您将看不到淡出动画。