2014-06-09 19 views
0

我有此XAML:StartStoryboard上的另一控制

<Window x:Class="StoryboardTest.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Grid.Resources> 
      <Style TargetType="Button"> 
       <Setter Property="RenderTransformOrigin" Value="0.5 0.5"/> 
       <Setter Property="RenderTransform"> 
        <Setter.Value> 
         <RotateTransform x:Name="rt" Angle="0"/> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </Grid.Resources> 
     <Grid.RowDefinitions> 
      <RowDefinition/> 
      <RowDefinition/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition/> 
      <ColumnDefinition/> 
     </Grid.ColumnDefinitions> 

     <Button Grid.Column="1" Content="Start"> 
      <Button.Triggers> 
       <EventTrigger RoutedEvent="Button.Click"> 
        <BeginStoryboard> 
         <Storyboard > 
          <DoubleAnimation From="0" To="100" Storyboard.TargetName="pbar" Storyboard.TargetProperty="Value" Duration="0:0:6"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </Button.Triggers> 
      </Button> 
     <Button Grid.Row="1" Content="1" x:Name="btn1"> 
      <Button.Triggers> 
       <EventTrigger RoutedEvent="Button.Click"> 
        <BeginStoryboard x:Name="bs1"> 
         <Storyboard> 
          <DoubleAnimation From="0" To="90" Storyboard.TargetProperty="RenderTransform.Angle" Duration="0:0:1" AutoReverse="True"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </Button.Triggers> 
      </Button> 
     <Button Grid.Row="1" Grid.Column="1" Content="2" x:Name="btn2"> 
      <Button.Triggers> 
       <EventTrigger RoutedEvent="Button.Click"> 
        <BeginStoryboard x:Name="bs2"> 
         <Storyboard> 
          <DoubleAnimation From="0" To="90" Storyboard.TargetProperty="RenderTransform.Angle" Duration="0:0:1" AutoReverse="True"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </Button.Triggers> 
      </Button> 
     <Button Grid.Row="1" Grid.Column="2" Content="3" x:Name="btn3"> 
      <Button.Triggers> 
       <EventTrigger RoutedEvent="Button.Click"> 
        <BeginStoryboard x:Name="bs3"> 
         <Storyboard> 
          <DoubleAnimation From="0" To="90" Storyboard.TargetProperty="RenderTransform.Angle" Duration="0:0:1" AutoReverse="True"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </Button.Triggers> 
     </Button> 
     <ProgressBar x:Name="pbar" Maximum="100" Grid.Row="2" Grid.ColumnSpan="3"/> 
    </Grid> 
</Window> 

正如你可以看到有4個按鈕(起動按鈕 - 主之一,按鈕1,2和3)和一個進度條。當我點擊按鈕1,2或3時,它們會輕微旋轉。我的問題是我如何在Start的按鈕EventTrigger中觸發旋轉(由各個故事板描述)?是否可以實現這一點,而不是在「開始」按鈕中寫入3個其他故事板,而是僅爲xaml中的按鈕1,2,3調用已附加的故事板?

回答

0
<Window.Resources> 
    <Storyboard x:Key="StoryboardName"> 
     <DoubleAnimation From="0" To="90" Storyboard.TargetProperty="RenderTransform.Angle" Storyboard.TargetName="btn1" Duration="0:0:1" AutoReverse="True"/> 
     <DoubleAnimation From="0" To="90" Storyboard.TargetProperty="RenderTransform.Angle" Storyboard.TargetName="btn2" Duration="0:0:1" AutoReverse="True"/> 
     <DoubleAnimation From="0" To="90" Storyboard.TargetProperty="RenderTransform.Angle" Storyboard.TargetName="btn3" Duration="0:0:1" AutoReverse="True"/> 
    </Storyboard> 
</Window.Resources> 

<Button Grid.Column="1" Content="Start"> 
     <Button.Triggers> 
      <EventTrigger RoutedEvent="Button.Click"> 
       <BeginStoryboard Storyboard="{StaticResource StoryboardName}"/> 
      </EventTrigger> 
     </Button.Triggers> 
     </Button> 

故事板中聲明的雙動畫將同時運行。

<Button> 
     <Button.Style> 
      <Style TargetType="Button"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=start, Path=IsPressed}" Value="True"> 
         <DataTrigger.EnterActions> 
          <BeginStoryboard> 
           ... 
          </BeginStoryboard> 
         </DataTrigger.EnterActions> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Button.Style> 
    </Button> 
+0

有什麼辦法觸發已經連接的故事板?在我的真實情況下,有許多按鈕已經聲明瞭故事板,將它們全部放入資源並重新分配是非常繁瑣的任務。 – Blablablaster

+0

您可以使用DataTrigger來確定是否按下開始按鈕,如果是,則運行附加的故事板。看看更新的answear。 – Maximus