1

2 つのページ (Windows.UI.Xaml.Controls.Page) があるとします。
page1 は this.Frame.Navigate(typeof(Page2), ); を呼び出します。2ページ目を表示します。
送信ページが左にアニメーション化され、受信ページが右からアニメーション化されるようにページをアニメーション化する方法は?

現在のコードは次のとおりです。

XAML ファイル

<Page>   
    ...  
    <Page.Transitions>  
        <TransitionCollection>  
            <PaneThemeTransition Edge="Right" x:Name="pageTransition"/>  
        </TransitionCollection>  
    </Page.Transitions>  
    ...  
</Page>  

CSファイル

protected override void OnNavigatedFrom(NavigationEventArgs e)  
{  
    if (e.NavigationMode == NavigationMode.New) pageTransition.Edge = EdgeTransitionLocation.Left;  
    else if (e.NavigationMode == NavigationMode.Back) pageTransition.Edge = EdgeTransitionLocation.Right;  
    base.OnNavigatedFrom(e);  
}  
4

1 に答える 1

0

1 つの方法は、標準のコントロールを置き換えて、まさにあなたが求めていることを行う私のコントロールFrameを使用することです。2 つのページが表示されるトランジションをサポートしており、次のページをプリロードして、ユーザーが要求したときにすぐに開くようにすることもできます。AlternativeFrame

別の解決策は、現在のページのスクリーンショットを取得しRenderTargetBitmap.RenderAsync()てルート フレームの前に表示し、そのスクリーンショットの後ろに隠してから、新しいページに移動し、読み込まれたときにスクリーンショットをスライドするアニメーションを実行することです。同時に新しいページを所定の位置にスライドさせます。標準Frameコントロールにはクロスページ遷移の組み込みサポートはありませんが、自分で作成するのはそれほど難しくありません。

は次のAlternativeFrameようになります。

<controls:AlternativeFrame
    x:Name="rootFrame"
    xmlns:controls="using:WinRTXamlToolkit.Controls"
    xmlns:Extensions="using:WinRTXamlToolkit.Controls.Extensions" 
    Extensions:FrameworkElementExtensions.ClipToBounds="True">
    <controls:AlternativeFrame.PageTransition>
        <controls:PushTransition
            ForwardDirection="Random"
            BackwardDirection="Random" />
    </controls:AlternativeFrame.PageTransition>
</controls:AlternativeFrame>

AlternativePage単にではなく、それを使用する必要がありますPage:

<controls:AlternativePage
    x:Class="YourApp.YourPageType"
    IsTabStop="false"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="using:WinRTXamlToolkit.Controls">
    <Grid>
    </Grid>
</controls:AlternativePage>

次に、次のように新しいページをプリロードできます。

await rootFrame.Preload(typeof(YourApp.YourPageType), null);

次のようにナビゲートします。

await rootFrame.Navigate(typeof(YourApp.YourPageType), null);

他にもいくつかのトランジションがあり、独自のトランジションを追加できますが、PushTransition必要なものを実装します。

ああ、ここでNuGet からツールキットを取得できます。

于 2014-05-07T20:30:17.940 に答える