显示扩展的 SplashScreen 删除了我的后退按钮 C# UWP

Showing Extended SplashScreen Removed my Back Button C# UWP

我已使用这篇文章将 BackButton 添加到我的 UWP 应用程序:http://www.wintellect.com/devcenter/jprosise/handling-the-back-button-in-windows-10-uwp-apps then I wanted to add an ExtendedSplashScreen to my App. So I used this article: http://www.c-sharpcorner.com/UploadFile/020f8f/universal-windows-platform-and-extended-splash-screen/

但是当我添加我的 ExtendedSplashScreen 时,BackButton 从我在 MainPage 之后打开的页面中消失了。我知道这与我所说的根框架有关,但我不知道应该更改什么。有帮助吗?

来自 DismissExtendedSplash 方法的代码覆盖框架和 OnNavigated 事件。

你可以使用一个小技巧。在App.xaml.cs中,将rootFrame设为全局变量:

public static Frame rootFrame;

并添加:

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

现在你的 DismissExtendedSplash 可能是这样的:

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

这里的问题是在DismissExtendedSplash方法中,作者创建了一个新的rootFrame并将其设置为Window.Current.Content。这会覆盖 App.xaml.cs 中创建的 rootFrame,因此处理后退按钮的代码将不起作用。要解决此问题,您可以在 DismissExtendedSplash 方法中使用 Window.Current.Content as Frame 来获取 rootFrame,如下所示:

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));
}