<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); } } }