2009-11-28 6 views
0

Может ли кто-нибудь сказать мне, как это будет выглядеть на C#?Перевести XAML EventTrigger на код C#

<EventTrigger RoutedEvent="Button.Click" SourceName="btnSplit"> 
       <EventTrigger.Actions> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation From="0" To="1" Duration="0:0:0.25" Storyboard.TargetName="gridSplit" Storyboard.TargetProperty="(FrameworkElement.LayoutTransform).(ScaleTransform.ScaleY)"/> 
          <DoubleAnimation From="1" To="0" Duration="0:0:0.25" Storyboard.TargetName="gridJoin" Storyboard.TargetProperty="(FrameworkElement.LayoutTransform).(ScaleTransform.ScaleY)"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger.Actions> 
      </EventTrigger> 

я не нужен «RoutedEvent» -часть, потому что я хочу, чтобы выполнить код, когда пользователь нажимает на кнопку программно (Click-EventHandler) .. RoutedEvent, Обработчик вызывается первым, поэтому я не может делать if-else и нужно делать всю анимацию в кодировке.

Заранее благодарен!

MemphiZ

ответ

3

Решено!

Просто дайте раскадровке в х: Имя, а затем вызвать его так:

<Storyboard x:Name="storyBoardName"> 
    <DoubleAnimation From="0" To="1" Duration="0:0:0.25" Storyboard.TargetName="grid1" Storyboard.TargetProperty="(FrameworkElement.LayoutTransform).(ScaleTransform.ScaleY)"/> 
    <DoubleAnimation From="1" To="0" Duration="0:0:0.25" Storyboard.TargetName="grid2" Storyboard.TargetProperty="(FrameworkElement.LayoutTransform).(ScaleTransform.ScaleY)"/> 
</Storyboard> 

Storyboard story = (Storyboard)this.FindResource("storyBoardName"); 
this.BeginStoryboard(story);