【问题标题】:WPF: Grid visibility fade out not behave as fade inWPF:网格可见性淡出不表现为淡入
【发布时间】:2018-12-18 09:22:51
【问题描述】:

所以我有这个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 秒。

我做错了什么?

【问题讨论】:

  • 在您的淡出故事板中,您将可见性设置为隐藏。这不应该是可见的吗?
  • 那么我需要改变什么?

标签: wpf animation grid storyboard


【解决方案1】:

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 属性之前隐藏元素,您将无法看到淡出动画。

【讨论】:

  • 我已经将我的网格可见性从隐藏更改为折叠,我希望在淡出完成后我的网格再次折叠(因为我的元素工具提示在可见禁用时网格发生)——任何代码我需要添加吗?
  • 如果您还有其他问题,请提出新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 2013-08-15
  • 2014-09-06
  • 2021-03-07
  • 2015-03-10
  • 1970-01-01
相关资源
最近更新 更多