首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WPF动画只向一个方向移动

WPF动画只向一个方向移动
EN

Stack Overflow用户
提问于 2013-12-03 14:46:10
回答 1查看 485关注 0票数 1

我有一系列的触发器来控制一个应该上下移动的酒吧。每次给出这些随机选择的值之一时,它都会滑入适当的位置:

代码语言:javascript
运行
复制
<Trigger Property="Content" Value="B000">
    <Trigger.EnterActions>
        <BeginStoryboard Name="B000" HandoffBehavior="SnapshotAndReplace">
            <Storyboard FillBehavior="HoldEnd" Duration="0:0:1">
                <DoubleAnimation Storyboard.TargetName="bar1" Storyboard.TargetProperty="Offset" To="0" Duration="0:0:1" BeginTime="0:0:0" />
                <DoubleAnimation Storyboard.TargetName="bar2" Storyboard.TargetProperty="Offset" To="0" Duration="0:0:1" BeginTime="0:0:0" />
            </Storyboard>
        </BeginStoryboard>
    </Trigger.EnterActions>
</Trigger>
<Trigger Property="Content" Value="B125">
    <Trigger.EnterActions>
        <BeginStoryboard Name="B125" HandoffBehavior="SnapshotAndReplace">
            <Storyboard FillBehavior="HoldEnd" Duration="0:0:1">
                <DoubleAnimation Storyboard.TargetName="bar1" Storyboard.TargetProperty="Offset" To=".125" Duration="0:0:1" BeginTime="0:0:0" />
                <DoubleAnimation Storyboard.TargetName="bar2" Storyboard.TargetProperty="Offset" To=".125" Duration="0:0:1" BeginTime="0:0:0" />
            </Storyboard>
        </BeginStoryboard>
    </Trigger.EnterActions>
</Trigger>
<Trigger Property="Content" Value="B250">
    <Trigger.EnterActions>
        <BeginStoryboard Name="B250" HandoffBehavior="SnapshotAndReplace">
            <Storyboard FillBehavior="HoldEnd" Duration="0:0:1">
                <DoubleAnimation Storyboard.TargetName="bar1" Storyboard.TargetProperty="Offset" To=".25" Duration="0:0:1" BeginTime="0:0:0" />
                <DoubleAnimation Storyboard.TargetName="bar2" Storyboard.TargetProperty="Offset" To=".25" Duration="0:0:1" BeginTime="0:0:0" />
            </Storyboard>
        </BeginStoryboard>
    </Trigger.EnterActions>
</Trigger>
<Trigger Property="Content" Value="B500">
    <Trigger.EnterActions>
        <BeginStoryboard Name="B500" HandoffBehavior="SnapshotAndReplace">
            <Storyboard FillBehavior="HoldEnd" Duration="0:0:1">
                <DoubleAnimation Storyboard.TargetName="bar1" Storyboard.TargetProperty="Offset" To=".5" Duration="0:0:1" BeginTime="0:0:0" />
                <DoubleAnimation Storyboard.TargetName="bar2" Storyboard.TargetProperty="Offset" To=".5" Duration="0:0:1" BeginTime="0:0:0" />
            </Storyboard>
        </BeginStoryboard>
    </Trigger.EnterActions>
</Trigger>
<Trigger Property="Content" Value="B750">
    <Trigger.EnterActions>
        <BeginStoryboard Name="B750" HandoffBehavior="SnapshotAndReplace">
            <Storyboard FillBehavior="HoldEnd" Duration="0:0:1">
                <DoubleAnimation Storyboard.TargetName="bar1" Storyboard.TargetProperty="Offset" To=".75" Duration="0:0:1" BeginTime="0:0:0" />
                <DoubleAnimation Storyboard.TargetName="bar2" Storyboard.TargetProperty="Offset" To=".75" Duration="0:0:1" BeginTime="0:0:0" />
            </Storyboard>
        </BeginStoryboard>
    </Trigger.EnterActions>
</Trigger>
<Trigger Property="Content" Value="B1k0">
    <Trigger.EnterActions>
        <BeginStoryboard Name="B1k0" HandoffBehavior="SnapshotAndReplace">
            <Storyboard FillBehavior="HoldEnd" Duration="0:0:1">
                <DoubleAnimation Storyboard.TargetName="bar1" Storyboard.TargetProperty="Offset" To="1" Duration="0:0:1" BeginTime="0:0:0" />
                <DoubleAnimation Storyboard.TargetName="bar2" Storyboard.TargetProperty="Offset" To="1" Duration="0:0:1" BeginTime="0:0:0" />
            </Storyboard>
        </BeginStoryboard>
    </Trigger.EnterActions>
</Trigger>

但出于某种原因,它只会上升。它应该再往下移动的部分,它就在那里。停止动画之间的变化只会使它从底部重新开始,这不是我想要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-03 15:30:07

我不知道你为什么要降低lol,但是每个动画/触发器都有EnterAction和ExitAction。

对我来说,这听起来像是你在寻找ExitAction,这将允许你将这个东西移回它的起始位置。:)

请看一下这个链接:

http://msdn.microsoft.com/en-us/library/system.windows.triggerbase.exitactions%28v=vs.110%29.aspx

以下是一个例子:

代码语言:javascript
运行
复制
<Style x:Key="PropertyTriggerExampleButtonStyle" TargetType="{x:Type Button}">

  <Setter Property="Opacity" Value="0.25" />

  <Style.Triggers>
    <Trigger Property="IsMouseOver" Value="True">

      <Trigger.EnterActions>
        <BeginStoryboard>
          <Storyboard>
            <DoubleAnimation Storyboard.TargetProperty="Opacity"
              To="1" Duration="0:0:1" />
          </Storyboard>
        </BeginStoryboard>
      </Trigger.EnterActions>
      <Trigger.ExitActions>
        <BeginStoryboard>
          <Storyboard>
            <DoubleAnimation Storyboard.TargetProperty="Opacity"
              To="0.25" Duration="0:0:1" />
          </Storyboard>
        </BeginStoryboard>
      </Trigger.ExitActions>          
    </Trigger>               
  </Style.Triggers>    
</Style>

编辑:

然后需要有这样的多个DoubleAnimations:

代码语言:javascript
运行
复制
        <BeginStoryboard>
          <Storyboard>
            <DoubleAnimation .... />
            <DoubleAnimation ... />
            <DoubleAnimation ... />
            <DoubleAnimation ... />
          </Storyboard>
        </BeginStoryboard>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20354241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档