现在,我所拥有的是,当用户点击页面时,页面会自动将用户发送到一个打开pdf文件的webtask。
现在正在发生的事情是,当用户按下后退按钮时,它会在返回到原始页面一瞬间,然后被重定向回到我分配给它的pdf(由于onnavigateto功能)
如何使用,当用户点击pdf文档中的后退按钮时,应用会将用户带回主页?
此外,在主页面上,如何确保清除后台堆叠? (由于应用程序必须退出MainPage,因此无法返回到pdf。)
我的代码到目前为止,我已经尝试过......
{
public partial class Page2 : PhoneApplicationPage
{
public Page2()
{
InitializeComponent();
}
//as soon as this page is opened, navigate/redirect it to the URL below
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
WebBrowserTask task = new WebBrowserTask() { URL ="http://test.com/test.pdf"};
task.Show();
}
//when the user clicks the hardware back button, instead of taking them to the daily notices, which will send them back to brower
// send the user to the main page
protected override void OnBackKeyPress
(System.ComponentModel.CancelEventArgs e)
{
base.OnBackKeyPress(e);
new Uri("/MainPage.xaml", UriKind.Relative);
}
答案 0 :(得分:1)
首先,为什么你需要只打开WebBrowserTask
的第二页?您可以从主页面执行此操作。
如果您仍想从第二页打开,可以将WebBrowserTask
移至构造函数并使用Dispatcher
将其包围。这种方法可以保证WebBrowserTask
在导航到此页面后只会调用一次(可能会出现一些墓碑问题)。或者,您可以将状态保存到PhoneApplicationPage.State
以处理用户的位置以及接下来应该打开的内容。
要清除堆栈,您可以使用下一个代码:
while (NavigationService.BackStack.Any())
{
NavigationService.RemoveBackEntry();
}
答案 1 :(得分:0)
您必须在应用程序级别而不是页面级别上检测到这一点。当您将用户“重定向”到PDF时,您的应用程序将被暂停。当他们然后导航回来时,它会恢复。
Visual Studio模板提供了一个在应用程序恢复时调用的方法:
// Code to execute when the application is activated (brought to foreground)
// This code will not execute when the application is first launched
private void Application_Activated(object sender, ActivatedEventArgs e)
{
}
在上述方法中,您可以设置一个标记,然后检查页面导航到的时间,表示发生了简历。