如何给窗口添加动画效果?

5
使用WPF,我如何动画化窗口的位置。我尝试简单地动画化Left/Top属性,但它没有起作用。有人知道怎么做吗?
谢谢!
3个回答

11

窗口显示时会产生淡入效果:

<Window.Triggers>
    <EventTrigger RoutedEvent="Loaded">
        <BeginStoryboard>
            <Storyboard Duration="00:00:3" Storyboard.TargetProperty="Opacity">
                <DoubleAnimation From="0" To="1"/>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Window.Triggers>

我不得不在DoubleAnimation上设置Duration属性,否则窗口会变成半透明。当然,为了改变不透明度并禁用默认的窗口边框,还需要设置AllowsTransparency="True"WindowStyle=None - Tim Sylvester

8

只需为您想要动画化的窗口创建一个Storyboard。

这里是一个名为w1的窗口的示例:

<Window.Triggers>
  <EventTrigger RoutedEvent="Window.Loaded">
    <EventTrigger.Actions>
      <BeginStoryboard>
        <Storyboard BeginTime="0" Duration="Forever">
          <DoubleAnimation Storyboard.TargetName="w1" Storyboard.TargetProperty="(Window.Top)" From="0" To="300" AutoReverse="true" BeginTime="0:0:0" Duration="0:0:1" RepeatBehavior="Forever"/>
          <DoubleAnimation Storyboard.TargetName="w1" Storyboard.TargetProperty="(Window.Left)" From="0" To="400" AutoReverse="true" BeginTime="0:0:0" Duration="0:0:2" RepeatBehavior="Forever"/>
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger.Actions>
  </EventTrigger>  
</Window.Triggers>

0
也许你可以尝试使用Expression Blend为其添加一个StoryBoard。 你可以在Blend中控制窗口属性的TimeLine变化,并在.cs代码中激活动画。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接