2012-05-23 196 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 –