2012-05-23 159 views
1

我想显示按钮的一些动画,然后点击按钮的点击事件。我正在使用以下XAML来实现该功能,但似乎Button.IsPressed触发器在点击事件后正在被触发。按钮点击WPF动画问题

如何设置触发器,使其在点击事件之前首先显示动画?

<Button x:Name="button" 
     Width="131" 
     Height="37" 
     Content="Button" 
     Margin="0,0,0,22" 
     Click="button_Click"> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <Style.Triggers> 
       <Trigger Property="Button.IsPressed" Value="True"> 
        <Trigger.ExitActions> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="Width" 
               From="130" 
               To="0" 
               Duration="0:0:2"/> 
          </Storyboard> 
         </BeginStoryboard> 
        </Trigger.ExitActions> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 

编辑:我试过,但同样的事情。

<EventTrigger RoutedEvent="PreviewMouseLeftButtonDown"> 
    <BeginStoryboard> 
     <Storyboard> 
      <DoubleAnimation Storyboard.TargetProperty="Width" 
          From="130" 
          To="0" 
          Duration="0:0:2"/> 
     </Storyboard> 
    </BeginStoryboard> 
</EventTrigger> 

回答

0

时,正是你想要的动画开始播放你没有提到,但你可以尝试使用PreviewMouseLeftButtonDown

+0

这是数据网格,基本上删除列的按钮。所以在它被删除之前,我想显示一些动画(将按钮的宽度从130更改为0),然后删除整列。动画是完美的,只有一件事是我不得不打电话给它后面的代码后面删除实际的列 –

+0

请参阅更新的内容(编辑) –

+0

这听起来像一个竞争条件。最好在后面的代码中启动动画,并暂停执行,直到故事板完成。如果您不这样做,那么在动画结束之前,该行可能会被删除。我不知道这个目的是正确的事件/覆盖,但你可以尝试OnExecutedDelete –