Цикл навигации и очистка бэк-стека - PullRequest
0 голосов
/ 01 марта 2012

Прямо сейчас у меня есть то, что, когда пользователь нажимает на страницу, страница автоматически отправляет пользователя в веб-задачу, которая открывает файл PDF.

Сейчас происходит то, что когда пользователь нажимает кнопку «Назад», он возвращается на страницу «Исходные» на долю секунды, а затем перенаправляется обратно в pdf, как я назначил (из-за функции onnavigateto) *

Как бы мне сделать так, чтобы, когда пользователь нажимал кнопку "Назад" в документе PDF, приложение возвращало его на главную страницу?

Кроме того, на главной странице как я могу убедиться, что обратный стек очищен? (Поскольку приложение должно выйти на главной странице, поэтому не может вернуться к 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);


}

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Прежде всего, зачем вам вторая страница, которая только открывает WebBrowserTask?Вы можете сделать это с главной страницы.

Если вы все еще хотите открыть со второй страницы, вы можете переместить WebBrowserTask в конструктор и окружить его Dispatcher.Этот подход гарантирует, что WebBrowserTask будет вызываться только один раз после перехода на эту страницу (возможно, будут некоторые проблемы с надгробием).Или вы можете сохранить состояние в PhoneApplicationPage.State, чтобы указать, где был пользователь и что вы должны открыть следующим.

Для очистки стека вы можете использовать следующий код:

while (NavigationService.BackStack.Any())
{
   NavigationService.RemoveBackEntry();
}
0 голосов
/ 01 марта 2012

Вы должны будете обнаружить это на уровне приложения, а не на уровне страницы. Когда вы «перенаправляете» пользователя в 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)
{
}

В вышеупомянутом методе вы можете установить флаг, который вы затем проверяете, когда ваша страница переместится на ,, который указывает, что возобновилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...