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

503
Vistas
Maui cambiar la navegación en BlazorWebView

¿Cómo puedo cambiar una página en BlazorWebView usando Maui? Por ejemplo, se abrió la página '/' y necesito abrir '/fetch'.

Encontré cómo volver al enlace anterior a través de js.

Creó un administrador de navegación personalizado:

 public class CustomNavigationManager { private static IJSRuntime JSRuntime { get; set; } public CustomNavigationManager(IJSRuntime jSRuntime) { JSRuntime = jSRuntime; } public static async Task Navigation(string url) { //Microsoft.Maui.Platform; if (JSRuntime!= null) { await JSRuntime.InvokeVoidAsync("navigation", url); } } }

Que llama al código Js. Que llama al código Js. Que coloqué en wwwroot/index.html

 <script type="text/javascript"> window.navigation = (url) => { window.location.href = url; // Error: There is no content at fetch. //history.back(); //window.location="https://0.0.0.0/fetch"; //Error: There is no content at fetch. } </script>

Registrar un servicio

 builder.Services.AddTransient<CustomNavigationManager>();

E inyectar en Shared/MainLayout.razor

 @page "/" @inject CustomNavigationManager navigation

Y lo uso en maui

 await CustomNavigationManager.Navigation("/fetch");

Si uso el código js history.back(); entonces todo funciona,

pero si quiero redirigir a /fetch usando

 window.location.href = url;

luego aparece un error: No hay contenido al buscar.

Página Fetch.razor

 @page "/fetch" @page "/fetch/{id}" <h1>Test!</h1>
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Fetch.razor

 @page "/fetch" @page "/fetch/{text}" <h3>@Text</h3> @code { [Parameter] public string Text { get; set; } }

MainLayout.razor

 @inherits LayoutComponentBase @inject CustomNavigationManager navigation <div class="page"> <div class="sidebar"> <NavMenu /> </div> <main> <div class="top-row px-4"> <a href="https://docs.microsoft.com/aspnet/" target="_blank">About</a> </div> <article class="content px-4"> @Body </article> <div>@Url</div> </main> </div> @code { [Inject] private NavigationManager MyNavigationManager { get; set; } private string Url; protected override void OnInitialized() { base.OnInitialized(); MyNavigationManager.LocationChanged += OnLocationChanges; Url = MyNavigationManager.Uri; } private void OnLocationChanges(object sender, LocationChangedEventArgs e) { Url = e.Location; StateHasChanged(); } }

CustomNavigationManager.cs

 public class CustomNavigationManager { private static NavigationManager _navigationManager; public CustomNavigationManager(NavigationManager MyNavigationManager) { _navigationManager = MyNavigationManager; } public static void Navigation(string url) { if (_navigationManager!=null) { _navigationManager.NavigateTo(url); } } }

Decidido así: Suscrito al evento de cambio de navegación. Implementó el servicio y llamó a NavigateTo. No funcionó a través de Js. Nota: BlazorWebView ya debe descargar el proyecto; de lo contrario, nada funcionará)

about 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