【问题标题】:Slide out/in (show/hide) animation for complete window整个窗口的滑出/滑入(显示/隐藏)动画
【发布时间】:2013-10-15 00:47:32
【问题描述】:

我有一个 Windows TrayIcon 应用程序。当用户单击托盘图标时,会显示我的 WPF 窗口。如果用户关闭窗口,它就会被隐藏起来。下次单击托盘图标时,会再次显示相同的窗口。

现在的目标是使窗口的外观具有动画效果。窗口应该从任务栏“向上滑动”。当用户关闭窗口时,它应该“向下滑动”。我目前有一个我不太喜欢的解决方案,我想知道是否有更好的方法。我有一个动画可以改变布局容器的高度(在这种情况下是网格):

<Storyboard x:Key="BottomUpSlideIn" Completed="BottomUpSlideIn_OnCompleted">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" Storyboard.TargetName="grid">
            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="470"/>
        </DoubleAnimationUsingKeyFrames>
</Storyboard>

但它实际上并没有隐藏窗口,它只是将其高度设置为零。动画完成后是否可以将窗口的可见性设置为隐藏?或者您知道完成这项工作的不同/更好的方法吗?

【问题讨论】:

  • 您可以同时为Opacity(/Visibilily) 设置动画。
  • 我真的不是这方面的专家。我怎么能这样做?你能给我一些建议吗?

标签: c# wpf storyboard


【解决方案1】:

我在我的第一个应用程序中使用了它...您可能需要根据您的要求调整 Trigger

<Window.Triggers>
    <EventTrigger RoutedEvent="Loaded">
        <BeginStoryboard>
            <Storyboard Name="SlideStoryboard">
                <DoubleAnimation Name="SlideDoubleAnimation" 
                    Storyboard.TargetName="SlideWindow" Storyboard.TargetProperty="Top"
                    Duration="0:0:0.75" Completed="SlideDoubleAnimation_Completed" 
                    AccelerationRatio="0.5" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Window.Triggers>

SlideWindowWindow.Name 属性的值。

然后对于结束动画,我只是调整了这个DoubleAnimation对象:

private void BeginCloseAnimation()
{
    SlideDoubleAnimation.From = System.Windows.SystemParameters.WorkArea.Height - 
        this.Height - 2;
    SlideDoubleAnimation.To = System.Windows.SystemParameters.WorkArea.Height;        
    SlideStoryboard.Begin();
    close = true;
}

private void SlideDoubleAnimation_Completed(object sender, EventArgs e)
{
    if (close) Close();
}

【讨论】:

  • 动画完成后可以更改可见性吗?因为我想隐藏窗口(而不是关闭它)
  • 当然,我不明白为什么不...试一试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
  • 2018-10-20
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 2019-06-14
相关资源
最近更新 更多