Te recomendamos que revises esta solución en un entorno controlado antes de enviarlo a producción, saludos.
Solución:
para restringir el Entry
para aceptar solo números, puede usar un Comportamiento o un Desencadenador.
Ambos reaccionarán cuando un usuario escriba en ellos. Entonces, para su uso, puede hacer que el activador o el comportamiento busquen caracteres que no sean números y los eliminen.
Algo como esto para un comportamiento (tenga en cuenta que escribí todo esto en SO y no intenté compilarlo, avíseme si no funciona):
using System.Linq;
using Xamarin.Forms;
namespace MyApp
public class NumericValidationBehavior : Behavior
protected override void OnAttachedTo(Entry entry)
entry.TextChanged += OnEntryTextChanged;
base.OnAttachedTo(entry);
protected override void OnDetachingFrom(Entry entry)
entry.TextChanged -= OnEntryTextChanged;
base.OnDetachingFrom(entry);
private static void OnEntryTextChanged(object sender, TextChangedEventArgs args)
if(!string.IsNullOrWhiteSpace(args.NewTextValue))
bool isValid = args.NewTextValue.ToCharArray().All(x=>char.IsDigit(x)); //Make sure all characters are numbers
((Entry)sender).Text = isValid ? args.NewTextValue : args.NewTextValue.Remove(args.NewTextValue.Length - 1);
Luego en tu XAML:
Para mí, la solución simple es simplemente agregar un identificador TextChanged a la entrada (este es un código específico de la interfaz de usuario, por lo que no rompe MVVM)
Luego, en el código detrás
private void OnTextChanged(object sender, TextChangedEventArgs e)
//lets the Entry be empty
if ( string.IsNullOrEmpty(e.NewTextValue) ) return;
if ( !double.TryParse(e.NewTextValue, out double value) )
((Entry) sender).Text = e.OldTextValue;
Cambie en int. Parse si necesita un número entero
Yo también estaba enfrentando esto, pero la mejor manera de implementar esto es a través de comportamientos, aquí hay un artículo que le muestra en detalle cómo implementar esto y aún más, como limitar el valor del número ingresado a un valor dado que establece en su XAML.
Te mostramos comentarios y valoraciones
Recuerda que puedes dar recomendación a esta reseña si te ayudó.