我已经使用这篇文章将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的内容有关,但我无法弄清楚我应该改变什么。有什么帮助吗?
答案 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));
}