2012-05-23 5 views
1

Я хочу показать некоторую анимацию кнопки, перед нажатием кнопки события. Я использую следующий XAML, чтобы достичь этого, но похоже, что триггер запускается после события click. 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> 

EDIT: Я попытался это, но то же самое.

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

ответ

0

Вы не упомянули, когда именно вы хотите анимацию, чтобы начать, но вы можете попробовать и использовать PreviewMouseLeftButtonDown

+0

Это кнопка DataGrid, который в основном удалить столбец. поэтому, прежде чем он будет удален, я хочу показать некоторую анимацию (изменить ширину кнопки от 130 до 0), а затем удалить весь столбец. Анимация прекрасна, только я должен позвонить, прежде чем она перейдет к коду, чтобы удалить фактический столбец –

+0

Pls см. Обновленный контент (Edit) –

+0

Это звучит как состояние гонки. Было бы лучше начать анимацию в коде и приостановить выполнение до завершения раскадровки. Если вы этого не сделаете, скорее всего, строка будет удалена до того, как анимация закончится. Я не знаю о правильном событии/переопределении для этой цели, но вы можете попробовать OnExecutedDelete –

Смежные вопросы