2013-09-25 2 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, либо, скорее всего, в коде, используйте эту ссылку для раскадровки, чтобы приостановить ее.

Таким образом, устраняется необходимость использования триггера стиля.

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