Markup for navigation transition animations : DoubleAnimation « Windows Presentation Foundation « C# / CSharp Tutorial






<Window x:Class="AnimateNavigateTransitions.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="AnimateNavigateTransitions" Height="300" Width="300">
  <Window.Resources>
    <Storyboard x:Key="transitionAnimation" TargetName="transitionPlaceholder">
      <DoubleAnimation Storyboard.TargetProperty="Opacity"
                       From="1" To="0" DecelerationRatio="1"
                       Duration="0:0:0.4" />
    </Storyboard>
  </Window.Resources>

  <StackPanel>
    <Frame Name="mainFrame" Source="Page1.xaml" />
    <Canvas Name="transitionPlaceholder" IsHitTestVisible="False" />
  </StackPanel>
</Window>
//File:Window.xaml.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Navigation;
using System.Windows.Media.Animation;


namespace AnimateNavigateTransitions
{
    public partial class Window1 : System.Windows.Window
    {
        VisualBrush lastPageBrush;
        public Window1()
        {
            InitializeComponent();
            mainFrame.Navigating += new System.Windows.Navigation.NavigatingCancelEventHandler(mainFrame_Navigating);
            mainFrame.Navigated += new NavigatedEventHandler(mainFrame_Navigated);
        }
        void mainFrame_Navigating(object sender, NavigatingCancelEventArgs e)
        {
            Page lastPage = mainFrame.Content as Page;
            if (lastPage == null){
                lastPageBrush = null;
               return;
            }
            lastPageBrush = new VisualBrush(lastPage);
            lastPageBrush.Viewbox = new Rect(0, 0, lastPage.ActualWidth,lastPage.ActualHeight);
            lastPageBrush.ViewboxUnits = BrushMappingMode.Absolute;
            lastPageBrush.Stretch = Stretch.None;

            Point pageOffset = lastPage.TransformToVisual(this).Transform(new Point());
            transitionPlaceholder.Margin = new Thickness(pageOffset.X, pageOffset.Y,0, 0);
        }
        void mainFrame_Navigated(object sender, NavigationEventArgs e)
        {
            if (lastPageBrush == null){
               return ;
            }    
            transitionPlaceholder.Background = lastPageBrush;
            lastPageBrush = null;
            Storyboard sb = (Storyboard) FindResource("transitionAnimation");
            sb.Begin(this);
        }
    }
}
WPF Markup For Navigation Transition Animations








24.115.DoubleAnimation
24.115.1.Remove aniamtion with RemoveStoryboardRemove aniamtion with RemoveStoryboard
24.115.2.Animated transformAnimated transform
24.115.3.Create DoubleAnimation and Animate a Button with Button.BeginAnimation and Button.WidthPropertyCreate DoubleAnimation and Animate a Button with Button.BeginAnimation and Button.WidthProperty
24.115.4.DoubleAnimation Loop foreverDoubleAnimation Loop forever
24.115.5.DoubleAnimation Loop three timesDoubleAnimation Loop three times
24.115.6.DoubleAnimation Loop for 30 secondsDoubleAnimation Loop for 30 seconds
24.115.7.TranslateTransform and DoubleAnimationTranslateTransform and DoubleAnimation
24.115.8.Path Animation with DoubleAnimationUsingPath, AutoReversePath Animation with DoubleAnimationUsingPath, AutoReverse
24.115.9.Animated Text TransformAnimated Text Transform
24.115.10.Markup for navigation transition animationsMarkup for navigation transition animations