自定切換頁面動畫

摘要:自定切換頁面動畫

在Silverlight裡,若我們要做切換頁面的動畫,除了使用內建的方式之外,我們也是可以利用Blend 4來製作的!

 

首先,我們先在Blend 4裡製作兩個動畫,一個叫PageIn,另一個叫PageOut
        

再來我們回到VS裡,先在參考那邊加入 Microsoft.Phone.Controls.Toolkit 這個元件。

加完之後,再新增個類別檔叫叫MyTranstion.cs,先引入

using Microsoft.Phone.Controls;

內容為

    public class MyTransition : TransitionElement
    {
        public const string StoryboardPropertyName = "Storyboard";

        public Storyboard Storyboard
        {
            get { return (Storyboard)GetValue(StoryboardProperty); }
            set { SetValue(StoryboardProperty, value); }
        }

        public static readonly DependencyProperty StoryboardProperty =
            DependencyProperty.Register(StoryboardPropertyName, typeof(Storyboard), typeof(MyTransition),
            new PropertyMetadata(null));

        public override ITransition GetTransition(System.Windows.UIElement element)
        {
            return new Transition(element, this.Storyboard);
        }
    }

加完後,打開要展現動畫的XAML裡,在上頭的 <phone:PhoneApplicationPage 裡面加上

    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
    xmlns:local="clr-namespace:ForExhibit"

ForExhibit 請換成您專案的名稱喔!

 

此時您的XAML裡應該已經有剛剛所新增的動畫Code的了,在它的下面加上

   <toolkit:TransitionService.NavigationInTransition>
        <toolkit:NavigationInTransition>
            <toolkit:NavigationInTransition.Backward>
                <local:MyTransition Storyboard="{StaticResource PageIn}"/>
            </toolkit:NavigationInTransition.Backward>
            <toolkit:NavigationInTransition.Forward>
                <local:MyTransition Storyboard="{StaticResource PageIn}"/>
            </toolkit:NavigationInTransition.Forward>
        </toolkit:NavigationInTransition>
    </toolkit:TransitionService.NavigationInTransition>
 
    <toolkit:TransitionService.NavigationOutTransition>
        <toolkit:NavigationOutTransition>
            <toolkit:NavigationOutTransition.Backward>
                <local:MyTransition Storyboard="{StaticResource PageOut}"/>
            </toolkit:NavigationOutTransition.Backward>
            <toolkit:NavigationOutTransition.Forward>
                <local:MyTransition Storyboard="{StaticResource PageOut}"/>
            </toolkit:NavigationOutTransition.Forward>
        </toolkit:NavigationOutTransition>
    </toolkit:TransitionService.NavigationOutTransition>

最後再編輯App.xaml.cs,找到

RootFrame = new PhoneApplicationFrame();

改成

RootFrame = new TransitionFrame();

這樣就大功告成啦!這樣就有自己的頁面切換動畫了!