2014-06-11 8 views
11

Vorrei aggiungere una transizione di pagina nell'app di Windows Phone 8.1 in modo tale che la pagina seguente scorrerà dalla parte inferiore dello schermo. Effetto simile viene utilizzato quando si avvia Bing premendo il pulsante Search.Windows Phone 8.1 Animazione di una pagina di diapositiva simile a Bing

Sfortunatamente, il MSDN non è molto descrittivo su quell'argomento. Qualcuno sa come implementare una tale animazione?

risposta

17

In primo luogo è necessario disattivare le transizioni in corso per la Frame - il posto migliore sarebbe in App.xaml.cs cui viene creato il rootframe ma dipende da come viene inizializzata la tua app. Qui per esempio, è nel costruttore MainPage:

public MainPage() 
{ 
    this.InitializeComponent(); 
    Frame mainFrame = Window.Current.Content as Frame; 
    mainFrame.ContentTransitions = null; 
} 

Dopo aver disabili transizioni di default, in ogni Page è possibile definire il proprio Transizione:

In Page.xaml:

<Page.Transitions> 
    <TransitionCollection> 
     <PaneThemeTransition Edge="Bottom"/>   
    </TransitionCollection> 
</Page.Transitions> 

io non sono certo se è esattamente l'animazione che stavi cercando. Ulteriori informazioni sulle animazioni si trovano here at MSDN.

Naturalmente è anche possibile definire Frame 's nuova ContentTransitions, in modo che essi sarebbero stati di default per tutti Pages - ad esempio:

// instead of null put in MainPage constructor: 
mainFrame.ContentTransitions = new TransitionCollection { new PaneThemeTransition { Edge = EdgeTransitionLocation.Bottom } }; 
+4

La soluzione che hai fornito è quasi perfetta, grazie. Questo è esattamente il tipo di animazione che stavo pensando. Tuttavia, immediatamente dopo l'avvio dell'animazione, la precedente pagina diventa nera. L'effetto risultante è che la pagina seguente scorre su un campo nero anziché sulla precedente pagina. Sai come aggiustarlo? – user3596795

+0

@ user3596795 Hai provato a impostare l'animazione Tema per tutte le pagine (alla fine della risposta) - in tal caso la Pagina precedente scorrerà verso il basso prima delle nuove diapositive. – Romasz

+1

Dopo aver impostato l'animazione Tema per tutte le Pagine, la precedente Pagina effettivamente si comporta come hai descritto Ma non è esattamente quello che intendevo. Mi piacerebbe che la prima pagina rimanesse ferma quando la seguente pagina scivolava. Hai qualche idea su come ottenerla? – user3596795

3

Le transizioni di default possono essere sovrascritte su base per la navigazione dal codice.

NavigationTransitionInfo transitionInfo = new SlideNavigationTransitionInfo(); 
Frame.Navigate(typeof(SecondPage), false, transitionInfo); 

Il codice qui sopra forzare il SecondPage a scivolare in fondo dal ricade perfettamente nel modo desiderato. Tuttavia, questo si applica solo a questo particolare scenario di navigazione. Se vuoi che SecondPage scivoli quando sei navigato da qualsiasi luogo, imposta NavigationTransitionInfo in XAML.

<Page.Transitions> 
    <TransitionCollection> 
     <NavigationThemeTransition> 
      <NavigationThemeTransition.DefaultNavigationTransitionInfo> 
       <SlideNavigationTransitionInfo/> 
      </NavigationThemeTransition.DefaultNavigationTransitionInfo> 
     </NavigationThemeTransition> 
    </TransitionCollection> 
</Page.Transitions> 

Questo forzerà la pagina a scorrere quando è navigato. Questo valore predefinito può ancora essere ignorato tramite codice per particolari scenari di navigazione.