読者です 読者をやめる 読者になる 読者になる

tmytのらくがき

個人の日記レベルです

Silverlight fot Windows Phone 7 Toolkitがめっちゃ便利

WP7 Dev

前にこんなんあったよ!ってだけ書いたSilverlight fot Windows Phone 7 Toolkitをちょっぴり使ってみると、めっちゃ便利。その中でもすばらしく便利な感じのTransitionを紹介。
Transitionの書き方は前にページ遷移のアニメーション - tmytのらくがきに書いたけども、Storyboardを作って、OnNavigatingFromとかをoverrideしてごにょごにょ... となかなかめんどくさい感じで、トランジションぐらい標準でサポートしてほしいんだけどFinalのSDKにははいるのかな・・・とかぼやいてました。
結局FinalのSDKではサポートされずに、そんなまさか... とおもっているとToolkitに導入されたので実質SDKでのサポートみたいなもんですね。

というわけで使い方。ひじょーにらくちんです。
まず、Microsoft.Phone.Controls.Toolkit への参照を追加します。
でもって、トランジションをつけたいページのXAMLにネームスペースを

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

みたいな感じで追加して、PhoneApplicationPageエレメント直下に次のXMLを追加。

<toolkit:TransitionService.NavigationInTransition>
    <toolkit:NavigationInTransition>
        <toolkit:NavigationInTransition.Backward>
            <toolkit:TurnstileTransition Mode="BackwardIn"/>
        </toolkit:NavigationInTransition.Backward>
        <toolkit:NavigationInTransition.Forward>
            <toolkit:TurnstileTransition Mode="ForwardIn"/>
        </toolkit:NavigationInTransition.Forward>
    </toolkit:NavigationInTransition>
</toolkit:TransitionService.NavigationInTransition>
<toolkit:TransitionService.NavigationOutTransition>
    <toolkit:NavigationOutTransition>
        <toolkit:NavigationOutTransition.Backward>
            <toolkit:TurnstileTransition Mode="BackwardOut"/>
        </toolkit:NavigationOutTransition.Backward>
        <toolkit:NavigationOutTransition.Forward>
            <toolkit:TurnstileTransition Mode="ForwardOut"/>
        </toolkit:NavigationOutTransition.Forward>
    </toolkit:NavigationOutTransition>
</toolkit:TransitionService.NavigationOutTransition>

これでトランジションの設定はおしまい。すごいらくちん。
でもって、これだけだとトランジションが実行されないので、App.xaml.csをすこーしだけ編集。
App.xaml.csの最後のほう、Phone application initialization という名前のリージョンが設定されていて、非表示になってるとおもいます。そこを展開すると、InitializePhoneApplication という関数が定義されています。その中をみてみると次のような記述があります。

// Create the frame but don't set it as RootVisual yet; this allows the splash
// screen to remain active until the application is ready to render.
RootFrame = new PhoneApplicationFrame();

このRootFrameを生成する部分でPhoneApplicationFrameでなくTransitionFrameを生成するように書き換えてやります。こんな感じに。

RootFrame = new TransitionFrame();

ここまでできればトランジションは使えます。面倒なストーリーボードの記述とかも全くやらないでもtoolkitが全部めんどうみてくれます。
Windows Phone 7っぽいページ遷移がめっちゃ楽にできるので是非使ってみてください。