我有一个应用程序使用Web浏览器控件在设备上显示本地内容,它作为应用程序中的页面托管,它与物理后退按钮很好地集成。
我遇到的问题是,如果我在应用程序栏中放置一个按钮以退出Web浏览器并返回到Web浏览器页面之前的页面,那么WP7应用程序页面堆栈会记住这一点,如果我开始按下后退按钮它将进入Web浏览器页面并开始遍历我在浏览器中查看的页面(反向)。
理想情况下,我想要的是Web浏览器页面不包含在应用程序页面堆栈中,我可以在运行时修改堆栈的内容还是强制不包含页面?
Jaime文章描述了浏览器控件的使用情况。
答案 0 :(得分:3)
通常无法在Windows Phone 7.0 SDK中修改NavigationStack。在Mango(7.1)中,您将能够清除NavigationStack。
NavigationService.RemoveBackEntry();
Jesse Liberty有一篇非常好的文章:
答案 1 :(得分:1)
链接文章介绍了如何将在webbrowser中导航到的页面添加到后台堆栈。
默认情况下,WebBrowser控件的导航历史记录不包含在应用程序后台堆栈中。
听起来好像你已经添加了额外的行为(在页面堆栈中包含浏览器历史记录),现在你想要解决它。
答案 2 :(得分:0)
首先,感谢valipour提供的链接!这个解决方案很棒,但我只想添加它以清除您需要执行以下操作的所有导航堆栈:
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启动它,则将清除导航堆栈。