1. Ing. Vicente Guzmán
Validations for an Entry [Xamarin.Forms]
Introducción
En este artículo veremos algunos de los diferentes tipos de validaciones que puede llevar un Entry, esto
normalmente para los formularios que existen en los registros de cualquier aplicación.
Comencemos
Para este ejemplo debemos de contar ya con nuestra aplicación en Xamarin.Forms, en dado caso que
no, realicemos lo siguiente:
Abramos Visual Studio y seleccionemos un Nuevo Proyecto.
Después, elijamos la aplicación multiplataforma (Cross-Platform), asignemos un nombre al proyecto y
establezcamos la ruta del proyecto. Luego, hagamos clic en OK.
2. Ing. Vicente Guzmán
Ahora seleccionemos la plantilla: Aplicación en Blanco (Blank App) y la estrategia del código compartido
será: .NET Standard
Una vez creada la solución, procedamos a editar la página MainPage.xaml en donde agregaremos un
mini formulario tipo de registro, al cual le brindaremos las distintas validaciones.
XAML
<StackLayout Margin="0,50">
<StackLayout>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="45*" />
<ColumnDefinition Width="45*" />
</Grid.ColumnDefinitions>
<Entry x:Name="UserName" Grid.Row="0" Grid.Column="0"
Placeholder="Nombre" />
<Entry x:Name="UserLastName" Grid.Row="0" Grid.Column="1"
Placeholder="Apellido" />
</Grid>
</StackLayout>
<StackLayout>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
3. Ing. Vicente Guzmán
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Entry x:Name="UserEmail" Grid.Row="0" Grid.Column="0"
Placeholder="Email" />
<Entry x:Name="UserCelular" Grid.Row="1" Grid.Column="0"
Placeholder="Teléfono" />
</Grid>
</StackLayout>
<Button x:Name="ClienteBtF" Text="Continuar"
BorderRadius="10"
BorderWidth="1"
BorderColor="Black"
TextColor="White"
Margin="30,0,30,0"/>
</StackLayout>
En el code behind, agreguemos el siguiente método, que se encargara de toda la lógica con respecto a
las distintas validaciones:
C#
private async Task<bool> validarFormulario()
{
//Valida si el valor en el Entry se encuentra vacio o es igual a Null
if (String.IsNullOrWhiteSpace(UserName.Text))
{
await this.DisplayAlert("Advertencia", "El campo del nombre es
obligatorio.", "OK");
return false;
}
//Valida que solo se ingresen letras
else if (!UserName.Text.ToCharArray().All(Char.IsLetter))
{
await this.DisplayAlert("Advertencia", "Tu información contiene números,
favor de validar.", "OK");
return false;
}
else
{
//Valida si se ingresan caracteres especiales
string caractEspecial = @"^[^ ][a-zA-Z ]+[^ ]$";
bool resultado = Regex.IsMatch(UserName.Text, caractEspecial,
RegexOptions.IgnoreCase);
if (!resultado)
{
await this.DisplayAlert("Advertencia", "No se aceptan caracteres
especiales, intente de nuevo.", "OK");
return false;
}
}
if (String.IsNullOrWhiteSpace(UserLastName.Text))
4. Ing. Vicente Guzmán
{
await this.DisplayAlert("Advertencia", "El campo del apellido es
obligatorio.", "OK");
return false;
}
//Valida que solo se ingresen letras
else if (!UserLastName.Text.ToCharArray().All(Char.IsLetter))
{
await this.DisplayAlert("Advertencia", "Tu información contiene números,
favor de validar.", "OK");
return false;
}
else
{
//Valida si se ingresan caracteres especiales
string caractEspecial = @"^[^ ][a-zA-Z ]+[^ ]$";
bool resultado = Regex.IsMatch(UserLastName.Text, caractEspecial,
RegexOptions.IgnoreCase);
if (!resultado)
{
await this.DisplayAlert("Advertencia", "No se aceptan caracteres
especiales, intente de nuevo.", "OK");
return false;
}
}
if (String.IsNullOrWhiteSpace(UserEmail.Text))
{
await this.DisplayAlert("Advertencia", "El campo del correo electronico
es obligatorio.", "OK");
return false;
}
else
{
//Valida que el formato del correo sea valido
bool isEmail = Regex.IsMatch(UserEmail.Text, @"A(?:[a-z0-
9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-
9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)Z", RegexOptions.IgnoreCase);
if (!isEmail)
{
await this.DisplayAlert("Advertencia", "El formato del correo
electrónico es incorrecto, revíselo e intente de nuevo.", "OK");
return false;
}
}
if (String.IsNullOrWhiteSpace(UserCelular.Text))
{
await this.DisplayAlert("Advertencia", "El campo del número celular es
obligatorio.", "OK");
return false;
}
//Valida si la cantidad de digitos ingresados es menor a 10
else if (UserCelular.Text.Length != 10)
{
await this.DisplayAlert("Advertencia", "Faltan digitos, favor de
ingresar su numero a 10 digitos.", "OK");
return false;
5. Ing. Vicente Guzmán
}
else
{
//Valida que solo se ingresen numeros
if(!UserCelular.Text.ToCharArray().All(Char.IsDigit))
{
await this.DisplayAlert("Advertencia", "El formato del celular es
incorrecto, solo se aceptan numeros.", "OK");
return false;
}
}
return true;
}
Para que esto funcione correctamente, ahora agregaremos el evento Clicked a nuestro Button, el cual
quedaría de la siguiente manera en el XAML:
Antes
Después
Ya para finalizar solo deberemos de mandar llamar al método de validarFormulario, en donde si todo se
ingresa de la manera correcta nos mostrara un mensaje que expresara que todos los campos cumplen
con el formato requerido.
C#
async void Continue_Tapped(object sender, EventArgs e)
{
if (await validarFormulario())
{
await DisplayAlert("Exito","Todos tus campos cumplieron las
validaciones.","OK");
}
}
6. Ing. Vicente Guzmán
Ejecutemos la aplicación para corroborar que todo funcione.
Resultado
Descarga el código completo desde mi GitHub.
¡Hasta la próxima!