【问题标题】:Add page in Navigation stack in Windows Phone app在 Windows Phone 应用的导航堆栈中添加页面
【发布时间】:2015-07-15 14:36:04
【问题描述】:

您好,我正在构建一个 Windows Phone 8.1 应用程序,它从模板空白 Windows Phone 应用程序开始。 在应用程序中有两个页面 1. 主页 2. 详情页

正常的用户流程是用户点击磁贴 -> MainPage -> DetailPage 但是现在可以将 DetailPage 固定为辅助磁贴,因此如果在 App.xaml.cs OnLaunched 中单击辅助磁贴,我编写了如下代码:

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

方法,但不明白如何使其正常工作。

【问题讨论】:

    标签: c# windows navigation windows-runtime windows-phone-8.1


    【解决方案1】:

    而不是返回使用

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多