Windows phone 7 修改WP7上后退按钮的应用程序页面堆栈

Windows phone 7 修改WP7上后退按钮的应用程序页面堆栈,windows-phone-7,webbrowser-control,back-button,Windows Phone 7,Webbrowser Control,Back Button,我有一个应用程序,它使用web浏览器控件在设备上显示本地内容,这是作为应用程序中的一个页面托管的,它与物理后退按钮很好地集成 我遇到的问题是,如果我在应用程序栏中放置一个按钮以退出web浏览器并返回到web浏览器页面之前的页面,则WP7应用程序页面堆栈会记住这一点,如果我开始按“上一步”按钮,它将转到web浏览器页面并开始遍历我在浏览器中查看的页面(相反) 理想情况下,我希望web浏览器页面不包括在应用程序页面堆栈中,我可以在运行时修改堆栈的内容,还是强制不包括页面 Jaime文章介绍了浏览器控

我有一个应用程序,它使用web浏览器控件在设备上显示本地内容,这是作为应用程序中的一个页面托管的,它与物理后退按钮很好地集成

我遇到的问题是,如果我在应用程序栏中放置一个按钮以退出web浏览器并返回到web浏览器页面之前的页面,则WP7应用程序页面堆栈会记住这一点,如果我开始按“上一步”按钮,它将转到web浏览器页面并开始遍历我在浏览器中查看的页面(相反)

理想情况下,我希望web浏览器页面不包括在应用程序页面堆栈中,我可以在运行时修改堆栈的内容,还是强制不包括页面

Jaime文章介绍了浏览器控件的使用情况


通常无法在Windows Phone 7.0 SDK中修改NavigationStack。在Mango(7.1)中,您将能够清除NavigationStack

NavigationService.RemoveBackEntry();
Jesse Liberty在这方面有一篇很好的文章:


通常无法在Windows Phone 7.0 SDK中修改NavigationStack。在Mango(7.1)中,您将能够清除NavigationStack

NavigationService.RemoveBackEntry();
Jesse Liberty在这方面有一篇很好的文章:


链接文章展示了如何将webbrowser中导航到的页面添加到后堆栈中

默认情况下,WebBrowser控件的导航历史记录不包括在应用程序后堆栈中


听起来好像您添加了额外的行为(将浏览器历史记录包括在页面后台堆栈中),现在您想解决这个问题。

链接的文章介绍了如何将webbrowser中导航到的页面添加到后台堆栈中

默认情况下,WebBrowser控件的导航历史记录不包括在应用程序后堆栈中

听起来好像您添加了额外的行为(将浏览器历史记录包括在页面后台堆栈中),现在您想解决它。

首先,感谢提供的链接!此解决方案非常好,但我只想补充一点,为了清除所有导航堆栈,您需要执行以下操作:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    if (e.NavigationMode == NavigationMode.New
        && NavigationContext.QueryString.ContainsKey("clear"))
    {
        while (NavigationService.CanGoBack)
        {
            NavigationService.RemoveBackEntry();
        }
    }
}
如果您将此代码添加到MainPage.xaml代码,并使用
/MainPage.xaml?clear=true
URI启动它,导航堆栈将被清除。

首先,感谢提供的链接!此解决方案非常好,但我只想补充一点,为了清除所有导航堆栈,您需要执行以下操作:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    if (e.NavigationMode == NavigationMode.New
        && NavigationContext.QueryString.ContainsKey("clear"))
    {
        while (NavigationService.CanGoBack)
        {
            NavigationService.RemoveBackEntry();
        }
    }
}

如果您将此代码添加到MainPage.xaml代码,并使用
/MainPage.xaml?clear=true
URI启动它,导航堆栈将被清除。

干杯马特-代码取自里奇,因此我将去检查他做了什么:)干杯马特-代码取自里奇,因此我将去检查他做了什么:)