2016-05-31 102 views
1

Ich habe den BackButton zu meiner UWP-App mit diesem Artikel hinzugefügt: http://www.wintellect.com/devcenter/jprosise/handling-the-back-button-in-windows-10-uwp-apps dann wollte ich einen ExtendedSplashScreen zu meiner App hinzufügen. Also habe ich diesen Artikel verwendet: http://www.c-sharpcorner.com/UploadFile/020f8f/universal-windows-platform-and-extended-splash-screen/Erweiterten SplashScreen anzeigen Entfernte meine Zurück-Taste C# UWP

Aber als ich meine ExtendedSplashScreen hinzugefügt, verschwand der BackButton von den Seiten, die ich nach der MainPage öffne. Ich weiß, dass es mit dem, was ich rootframe nenne, verwandt ist, aber ich kann nicht herausfinden, was ich ändern sollte. Irgendeine Hilfe?

Antwort

2

Das Problem hier ist, dass in DismissExtendedSplash Methode, der Autor erstellen eine neue rootFrame und setzen Sie es als Window.Current.Content. Dies überschreibt die rootFrame erstellt in App.xaml.cs, so dass der Code zum Umgang mit der Zurück-Taste nicht funktioniert. Um dieses Problem zu beheben, können Sie nur Window.Current.Content as Frame in DismissExtendedSplash Methode verwenden, um die rootFrame wie zu erhalten folgenden:

private async void DismissExtendedSplash() 
{ 
    await Task.Delay(TimeSpan.FromSeconds(3)); 
    // set your desired delay 
    //rootFrame = new Frame(); 
    //MainPage mainPage = new MainPage(); 
    //rootFrame.Content = mainPage; 
    //Window.Current.Content = rootFrame; 
    //rootFrame.Navigate(typeof(MainPage)); // call MainPage 
    ((Window.Current.Content) as Frame).Navigate(typeof(MainPage)); 
} 
1

Der Code aus der DismissExtendedSplash-Methode überschreibt den Frame und das OnNavigated-Ereignis.

Sie können einen kleinen Trick verwenden. In App.xaml.cs machen rootFrame eine globale Variable:

public static Frame rootFrame; 

Und auch hinzufügen:

public static new App Current 
{ 
    get { return Application.Current as App; } 
} 

Jetzt könnte Ihr DismissExtendedSplash wie:

async void DismissExtendedSplash() 
{ 
    await Task.Delay(TimeSpan.FromSeconds(3)); // set your desired delay 
    App.rootFrame.Navigate(typeof(MainPage)); 
}