2013-09-25 74 views
0

,和一個叫animation生活在<Window.Resources>故事板,我怎樣可以暫停(和恢復)從代碼引發的背後故事板通過((Storyboard)FindResource("animate")).Begin(Tab1, true);訪問window.resources故事板從給定下面的樣式模板

以下代碼錯誤,說PauseStoryboard事件無法找到動畫,這是有道理的,因爲它不住在模板中。 BeginStoryboard事件允許您綁定資源,但暫停和恢復不會。

<Style x:Key="HiddenTabItem" TargetType="{x:Type TabItem}"> 
    <Setter Property="HeaderTemplate"> 
     <Setter.Value> 
      <DataTemplate DataType="{x:Type TabItem}"> 
       <Border x:Name="grid"> 
        <ContentPresenter> 
         <ContentPresenter.Content> 
          <TextBlock Text="{TemplateBinding Content}"/> 
         </ContentPresenter.Content> 
        </ContentPresenter> 
       </Border> 

       <DataTemplate.Triggers> 
        <EventTrigger RoutedEvent="MouseEnter"> 
         <PauseStoryboard BeginStoryboardName="animate" /> 
        </EventTrigger> 
       </DataTemplate.Triggers> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

的動畫故事板:

<Window.Resources> 

    <Storyboard x:Key="animate"> 
     <ObjectAnimationUsingKeyFrames BeginTime="0:0:0" Storyboard.TargetProperty="Visibility"> 
      <DiscreteObjectKeyFrame KeyTime="0"> 
       <DiscreteObjectKeyFrame.Value> 
        <Visibility>Visible</Visibility> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 
     </ObjectAnimationUsingKeyFrames> 
     <DoubleAnimation BeginTime="0:0:0.0" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.2"/> 
     <DoubleAnimation BeginTime="0:0:2.5" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:0.5"/> 
     <ObjectAnimationUsingKeyFrames BeginTime="0:0:5.5" Storyboard.TargetProperty="Visibility"> 
      <DiscreteObjectKeyFrame KeyTime="0"> 
       <DiscreteObjectKeyFrame.Value> 
        <Visibility>Hidden</Visibility> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 
     </ObjectAnimationUsingKeyFrames> 
    </Storyboard> 

</Window.Resources> 

回答

1

我怎麼可以暫停(和恢復)從代碼引發的故事板後面

首先保存引用這是故事板在代碼隱藏在一個方便的位置開始。由於您現在已將其作爲參考,請從您定位的控件訂閱鼠標輸入事件。無論是在Xaml中還是在代碼隱藏中,都可以使用該故事板的引用來暫停它。

因此不需要使用樣式觸發器。