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

793
Vistas
Establecer el foco en una entrada en Xamarin.Forms

Este es solo un ejemplo simplificado, pero estoy tratando de configurarlo para que cuando abra esta página en mi aplicación, lo primero que sucede es que el teclado aparece listo para que el usuario escriba su respuesta a una entrada. campo.

 var namelabel = new Label { Text = "What is your name?" }; var nameentry = new Entry { Placeholder = "Type here..." }; var colorlabel = new Label { Text = "What's your fav color?" }; var colorentry = new Entry { Placeholder = "Type here..." }; Content = new StackLayout { Spacing = 15, Children = { namelabel, nameentry, colorlabel, colorentry } };

¿Cómo puedo establecer el foco de la página en la primera entrada? Y además, después de que el usuario haya ingresado su primera entrada, ¿cómo podría configurar esto para que el usuario pueda presionar el botón "Siguiente" en el teclado (o algo por el estilo) y la aplicación lo llevará a completar el segunda entrada?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Utilice el método de Focus

 nameentry.Focus();

Si desea que el foco se establezca cuando aparece su página, probablemente debería hacerlo en el método OnAppearing

 protected override void OnAppearing () { base.OnAppearing (); nameentry.Focus(); }
over 4 years ago · Santiago Trujillo Denunciar

0

En uno de mis proyectos hice algo como esto. Por favor, intente el siguiente ejemplo:

 public class EntryFocusBehavior : Behavior<Entry> { public string NextFocusElementName { get; set; } protected override void OnAttachedTo(Entry bindable) { base.OnAttachedTo(bindable); bindable.Completed += Bindable_Completed; } protected override void OnDetachingFrom(Entry bindable) { bindable.Completed -= Bindable_Completed; base.OnDetachingFrom(bindable); } private void Bindable_Completed(object sender, EventArgs e) { if (string.IsNullOrEmpty(NextFocusElementName)) return; var parent = ((Entry)sender).Parent; while (parent != null) { var nextFocusElement = parent.FindByName<Entry>(NextFocusElementName); if (nextFocusElement != null) { nextFocusElement.Focus(); break; } else { parent = parent.Parent; } } } }

Y luego XAML: Código XAML

!!! Por favor, avíseme si cometí un error en el código.

over 4 years ago · Santiago Trujillo Denunciar

0

Justo dentro de OnAppearing(), agregue el siguiente código,

 protected async override void OnAppearing() { await Task.Run(() => { Task.Delay(100); Device.BeginInvokeOnMainThread(async () => { txtName.Focus(); }); }); }

Nota: txtName es el nombre de referencia de su campo de entrada.

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