Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

231
Vistas
Manejo de navegación trasera Windows 10 (UWP)

En mi página Xaml tengo un marco.

Estoy tratando de tener un evento backButton para navegar dentro del marco.

así que traté de usar este fragmento de código

 public MainPage(){ this.InitializeComponent(); if(Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons")) { Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed; } } private void HardwareButtons_BackPressed(object sender,BackPressedEventArgs e) { if(insideFrame.CanGoBack())insideFrame.GoBack(); else Application.Current.Exit(); }

pero en el teléfono después de hacer el evento HardwareButtons_BackPressed , cierra la aplicación.

Parece que se está ejecutando un comportamiento de botón de retroceso predeterminado en MainPage ...

¿Cómo puedo arreglarlo? ¿Y en Windows10 agregan nuevos eventos para manejar la navegación hacia atrás?


[Actualizar]

Ahora descubrí que es mejor usar SystemNavigationManager en Windows 10 en lugar de Input.HardwareButtons.BackPressed .

 SystemNavigationManager currentView = SystemNavigationManager.GetForCurrentView();
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Windows 10 (UWP) incluye SystemNavigationManager en el espacio de nombres Windows.UI.Core solo con fines de navegación.

Debido a que SystemNavigationManager es parte de Windows Universal Platform , es compatible con todas las familias de dispositivos que se ejecutan en Windows 10, incluidos dispositivos móviles y PC.

Para una sola página


Si solo desea manejar la navegación para una sola página. Siga los siguientes pasos

Paso 1 Usar espacio de nombres Windows.UI.Core

 using Windows.UI.Core;

Paso 2. Registre el evento de solicitud de devolución para la vista actual. El mejor lugar para esto es el constructor principal de la clase después de InitializeComponent() .

 public MainPage() { this.InitializeComponent(); //register back request event for current view SystemNavigationManager.GetForCurrentView().BackRequested += MainPage_BackRequested; }

Paso 3. Manejar el evento BackRequested

 private void Food_BackRequested(object sender, BackRequestedEventArgs e) { if (Frame.CanGoBack) { Frame.GoBack(); e.Handled = true; } }

Para la aplicación completa en un solo lugar para un solo rootFrame


El mejor lugar para manejar todos los botones de retroceso para todas las Vistas es App.xaml.cs

Paso 1 Usar espacio de nombres Windows.UI.Core

 using Windows.UI.Core;

Paso 2. Registre el evento de solicitud de devolución para la vista actual. El mejor lugar para esto es OnLaunched justo antes Window.Current.Activate

 protected override void OnLaunched(LaunchActivatedEventArgs e) { ... SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested; Window.Current.Activate(); }

Paso 3. Manejar el evento BackRequested

 private void OnBackRequested(object sender, BackRequestedEventArgs e) { Frame rootFrame = Window.Current.Content as Frame; if (rootFrame.CanGoBack) { rootFrame.GoBack(); e.Handled = true; } }

Referencias: Manejar el botón Atrás presionado en UWP

¡Espero que esto sea útil para alguien!

over 4 years ago · Santiago Trujillo Denunciar

0

Debe decirle al sistema que manejó la pulsación del botón de retroceso configurando la propiedad Handled de BackPressedEventArgs en verdadero.

 private void OnHardwareButtonsBackPressed(object sender, BackPressedEventArgs e) { // This is the missing line! e.Handled = true; // Close the App if you are on the startpage if (mMainFrame.CurrentSourcePageType == typeof(Startpage)) App.Current.Exit(); // Navigate back if (mMainFrame.CanGoBack) { mMainFrame.GoBack(); } }
over 4 years ago · Santiago Trujillo Denunciar

0

Pruebe esto. Funcionará para la navegación hacia atrás del marco.

 protected override void OnNavigatedTo(NavigationEventArgs e) { HardwareButtons.BackPressed += HardwareButtons_BackPressed; } void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e) { Frame rootFrame = Window.Current.Content as Frame; if (Frame.CanGoBack) { e.Handled = true; Frame.GoBack(); } } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda