Cuando se navega una página en Silverlight puede anular este método.Cómo detectar el botón de retroceso o el botón de navegación hacia adelante en una aplicación de navegación Silverlight
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
}
El NavigationEventArgs
tiene una enumeración NavigationMode
que se define como
public enum NavigationMode
{
New = 0,
Back = 1,
Forward = 2,
Refresh = 3,
}
Pero llamar e.NavigationMode
siempre lanza una NotImplementedException
¿Hay una manera de Silverlight para detectar una página está siendo navegado a causa el usuario presiona el botón de navegación hacia adelante o hacia atrás.
Lo que estoy tratando de lograr es algún tipo de estado que se puede conservar cuando el usuario presiona el botón Atrás.
Por ejemplo, supongamos que tiene una página de cliente que muestra una lista de clientes en una cuadrícula de datos. El usuario puede seleccionar un cliente y hay una vista detallada que muestra todos los pedidos para ese cliente. Ahora dentro de un artículo de pedido puede hacer clic en un enlace de hipervínculo que lo lleva al historial de envío del pedido que es una página separada. Cuando el usuario pulsa el botón Atrás, quiero volver a la página de clientes y seleccionar automáticamente el cliente que estaba viendo. ¿Es esto posible?
También probé a cabo la función de navegación fragmento
NavigationService.Navigate(new Uri("#currentcustomerid="
+ customer.Id.ToString(), UriKind.Relative));
cuando cambia la selección del cliente, pero esto añade demasiados elementos a la historia cuando el usuario hace clic en varios clientes en la página del cliente.
EDITAR
También hay un método que se puede anular
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
}
que es el mismo que controla el evento NavigationService.Navigating como se indica por la respuesta de BugFinder. En este método e.NavigationMode
siempre devuelve New
cuando presione el botón Atrás o Adelante. La única vez que este método devuelve Back
es cuando se llama explícitamente NavigationService.GoBack()
Incluso cuando presiona el botón Atrás o Adelante. ** NavigationMode ** siempre es 'NavigationMode.New' en este método. –