2013-10-08 4 views
1

Я пытаюсь добиться приятной анимации при переключении вкладок в TabControl.
На данный момент, мой стиль анимации XAML выглядит следующим образом:Анимация TabControl

<EventTrigger RoutedEvent="SelectionChanged"> 
    <BeginStoryboard x:Name="selectionChangedBeginStoryboard"> 
     <Storyboard> 
      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="borderScale" 
              Storyboard.TargetProperty="ScaleX"> 
       <DoubleKeyFrameCollection> 
        <EasingDoubleKeyFrame Value="0" KeyTime="0:0:0.2"/> 
        <EasingDoubleKeyFrame Value="1" KeyTime="0:0:0.4"/> 
       </DoubleKeyFrameCollection> 
      </DoubleAnimationUsingKeyFrames> 
     </Storyboard> 
    </BeginStoryboard> 
</EventTrigger> 

То, что я хочу, чтобы достичь является вращающийся эффект на закладке transmition. Таким образом, это будет похоже на то, что экран отворачивается и возвращается с новой вкладкой.

Проблема заключается в том, что при переключении на другую вкладку Содержимое переключается сразу, а анимация просто поворачивает новую вкладку.

Любые идеи, пожалуйста? :)
Спасибо!

ответ

1

Я бы рекомендовал вам использовать библиотеку перехода, такую ​​как «Переход». Вы можете загрузить эту библиотеку с страницы Transitionals на CodePlex.

Причина, почему я говорю это потому, что для того, чтобы делать то, что вы хотите сделать, вам нужно будет захватить Visual старого TabItemперед тем переключения вкладок, анимация, что вместо TabItem, а затем удалить, что и восстановить фактические элементы управления.

Однако вышеупомянутая библиотека уже делает это и предоставляет несколько различных переходов для вас. Вы можете получить помощь с использованием библиотеки, загружая файл «» TransitionalsHelp_1_0.zip по следующей ссылке:

http://transitionals.codeplex.com/releases/view/12954

1

Вместо использования сторонних программ, я рекомендую Blend. Откройте решение и работайте с VisualStateManager. Я сделал переходный эффект от Unselected до Selected менее чем за 30 секунд. Это было просто (изменение непрозрачности), но Blend очень удобен для пользователя, и вы можете интегрироваться с Visual Studio изначально.

Вот что он генерировал быть (не то, что вы просите):

   <Setter.Value> 
        <ControlTemplate TargetType="{x:Type TabItem}"> 
         <Grid x:Name="templateRoot" SnapsToDevicePixels="true"> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="CommonStates"/> 
           <VisualStateGroup x:Name="SelectionStates"> 
            <VisualStateGroup.Transitions> 
             <VisualTransition GeneratedDuration="0:0:0.3"/> 
            </VisualStateGroup.Transitions> 
            <VisualState x:Name="Unselected"> 
             <Storyboard> 
              <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="templateRoot"> 
               <EasingDoubleKeyFrame KeyTime="0" Value="0.8"/> 
              </DoubleAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="Selected"/> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 

удачи.