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

时间:2016-05-31 19:39:22

标签: c# uwp splash-screen back-button

我已经使用这篇文章将BackButton添加到我的UWP应用程序中:http://www.wintellect.com/devcenter/jprosise/handling-the-back-button-in-windows-10-uwp-apps然后我想在我的应用程序中添加一个ExtendedSplashScreen。所以我使用了这篇文章:http://www.c-sharpcorner.com/UploadFile/020f8f/universal-windows-platform-and-extended-splash-screen/

但是当我添加我的ExtendedSplashScreen时,BackButton从MainPage之后打开的Pages I消失了。我知道它与我调用rootframe的内容有关,但我无法弄清楚我应该改变什么。有什么帮助吗?

2 个答案:

答案 0 :(得分:2)

此处的问题是,在DismissExtendedSplash方法中,作者创建了一个新的rootFrame并将其设置为Window.Current.Content。这会覆盖在App.xaml.cs中创建的rootFrame,因此处理后退按钮的代码将不起作用。要解决此问题,您只需使用Window.Current.Content as Frame方法中的DismissExtendedSplash即可获得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));
}

答案 1 :(得分:1)

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