Eliminar la página actual de la pila de navegación y WebBrowserTask

Tengo una página que llama a WebBrowserTask. Cuando el usuario regresa del navegador, no quiero mostrar la página que inició la tarea, sino la anterior.

El problema es que la pila de navegación no contiene la página actual, y no tengo forma de eliminarla de las entradas de la página, y WebBrowserTask no nos permite hacer nada.

En Android, puedo especificar que una actividad determinada no se agregue en la pila de actividades. ¿Hay algo como esto?

Actualmente, la única forma que he encontrado para hacer casi lo que quiero es establecer un indicador cuando llamo a la tarea y verificarlo en el controlador OnNavigatedTo de la página. Pero la página sigue visible unos segundos antes de volver. No es bueno.

Gracias.

preguntado el 31 de julio de 12 a las 11:07

1 Respuestas

No he probado esto, pero es posible que pueda hacer lo siguiente

bool navigatedFromBrowser;
public MainPage()
{
    navigatedFromBrowser = false;
}
public void someMethod()
{
    WebBrowserTask webBrowserTask = new WebBrowserTask();
    webBrowserTask.Uri = new Uri("http://msdn.microsoft.com", UriKind.Absolute);
    webBrowserTask.Show();
    navigatedFromBrowser = true;
}
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
    if(navigatedFromBrowser && NavigationService.CanGoBack)
    {
        navigatedFromBrowser = false;
        NavigationService.GoBack();
    }

}

Puede que sea una forma fea de hacerlo, pero puede que funcione. navegadFromBrowser debe mantener su valor porque será la misma instancia de la página cuando se navegue de vuelta desde el navegador.

Respondido el 04 de Septiembre de 12 a las 19:09

Estoy haciendo eso con el método OnNavigatedTo. Funciona, pero no es bueno (la página se muestra brevemente antes de volver). Usando la variante OnNavigatedFrom, lanza una InvalidOperationException si no envuelvo la llamada en un BeginInvoke (supongo que la interfaz de usuario aún no está en primer plano). Pero incluso si hago eso, no cambia nada. - Matthieu Oger

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.