windows - Navigation loop og clearing back-stack

Indlæg af Hanne Mølgaard Plasc

Problem



Lige nu har jeg, når brugeren klikker på siden, automatisk sende brugeren til en webtask, der åbner en pdf-fil.


Hvad der sker lige nu, er når brugeren trykker på back-knappen, går den tilbage til den oprindelige side i en split sekund, før den omdirigeres tilbage til den pdf, som jeg har tildelt den til (på grund af onnavigateto funktionen)


Hvordan ville jeg gøre det sådan, at når brugeren klikker på back-knappen i pdf-dokumentet, vil appen tage brugeren tilbage til hovedsiden?


På hovedsiden, hvordan sikrer jeg mig også, at backstacken er ryddet? (Da programmet skal afslutte på hovedsiden, kan det ikke gå tilbage til pdf'en.)


Min kode hidtil har jeg forsøgt ...


{
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);


}

Bedste reference


Først og fremmest, hvorfor har du brug for den anden side, der kun åbner en WebBrowserTask? Du kan gøre dette fra hovedsiden.


Hvis du stadig vil åbne fra anden side, kan du flytte WebBrowserTask til konstruktør og omslutte den med Dispatcher. Denne tilgang er garanteret, at WebBrowserTask kun kaldes en gang efter navigation til denne side (måske vil der være nogle problemer med gravsten). Eller du kan gemme tilstand til PhoneApplicationPage.State for at håndtere, hvor brugeren var og hvad du skal åbne næste.


For at rydde tilbage stakken kan du bruge næste kode:


while (NavigationService.BackStack.Any())
{
   NavigationService.RemoveBackEntry();
}

Andre referencer 1


Du bliver nødt til at registrere dette på applikationsniveauet, snarere end sidens niveau. Når du 'omdirigerer' brugeren til PDF-filen, bliver din ansøgning suspenderet. Når de derefter navigerer tilbage, genoptages den.


Skabelonen Visual Studio giver en metode, som den påberåbte, når programmet genoptages:


// 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)
{
}


Inden for ovenstående metode kan du sætte et flag, som du så tjekker, når din side navigeres til ,, der angiver, at et CV er opstået.