在Windows Phone应用程序的导航堆栈中添加页面
本文关键字:添加 堆栈 导航 Windows Phone 应用程序 | 更新日期: 2023-09-27 18:02:45
嗨,我正在构建一个Windows Phone 8.1应用程序,它是用模板空白Windows Phone应用程序开始的。在应用程序中有两个页面1. 主页2. DetailPage
正常的用户流程是用户点击平铺-> MainPage -> DetailPage但是现在DetailPage可以被固定为次要标题,所以如果次要标题在App.xaml.cs onlaunching中被点击,我已经写了如下代码:
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
//Init rot frame and default logic of Windows Phone
}
if (rootFrame.Content == null)
{
// if (e.Arguments has indicate app launched from tile)
//launch DetailPage
//else
//Launch MainPage
}
else
{
// if (e.Arguments has indicate app launched from tile)
//launch DetailPage
//else
//Launch MainPage
}
// Ensure the current window is active
Window.Current.Activate();
我知道上面的代码很粗糙,我正在改进它。
所以现在如果用户点击DetailPage上的硬件返回按钮,它会回到MainPage。为此,我使用了以下代码块:
if (Frame.CanGoBack)
{
e.Handled = true;
Frame.GoBack();
}
因此,如果用户直接结束在DetailPage通过点击二级平铺,然后点击硬件返回按钮,我希望它回到MainPage,但它是直接退出应用程序作为MainPage不存在于BackStack。我该如何做到这一点?
我试图使用
Frame.BackStack.Add
方法,但不知道如何使其正确工作。
不使用
Frame.GoBack();
直接导航到主页(也许清理BackStack)
Frame.Navigate(typeof(HomePage));
Frame.BackStack.Clear();
那么,把它放在你的上下文中,像这样的东西会起作用:
if (Frame.CanGoBack)
{
e.Handled = true;
Frame.GoBack();
}
else
{
// app was launched from a secondary tile
e.Handled = true;
Frame.Navigate(typeof(HomePage));
Frame.BackStack.Clear();
}