Compartir a través de


EmailValidationBehavior

EmailValidationBehavior es un Behavior que permite a los usuarios determinar si la entrada de texto es una dirección de correo electrónico válida o no. Por ejemplo, un control Entry puede tener un estilo diferente en función de si se proporciona una dirección de correo electrónico válida o no válida. La validación se logra mediante una expresión regular que se usa para comprobar si la entrada de texto es una dirección de correo electrónico válida o no.

Cuando se adjunta a un InputView (por ejemplo, Entry, Editor, etc.), EmailValidationBehavior cambiará el teclado predeterminado, Keyboard.Default, a Keyboard.Email. Si se ha especificado un Keyboard no predeterminado para el InputView, EmailValidationBehavior no cambiará el Keyboard.

Cuando se desasocie de un InputView, EmailValidationBehavior cambiará Keyboard.Email de nuevo a Keyboard.Default. Si se ha especificado un Keyboard distinto de Keyboard.Email para el InputView, EmailValidationBehavior, no cambiará el Keyboard al desasociar.

Importante

Los comportamientos del kit de herramientas de la comunidad .NET MAUI no establecen el elemento BindingContext de un comportamiento, ya que los comportamientos se pueden compartir y aplicar a varios controles a través de estilos. Para más información, consulte comportamientos de .NET MAUI

Sintaxis

En los ejemplos siguientes se muestra cómo agregar el EmailValidationBehavior a un Entry y cambiar el TextColor en función de si el texto especificado es una dirección de correo electrónico válida.

XAML

Incluir el espacio de nombres XAML

Para usar el kit de herramientas en XAML, es necesario agregar el siguiente xmlns a la página o vista:

xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"

Por lo tanto, el siguiente:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">

</ContentPage>

Se modificaría para incluir el xmlns de la siguiente manera:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">

</ContentPage>

Uso de EmailValidationBehavior

El EmailValidationBehavior se puede usar de la siguiente manera en XAML:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="CommunityToolkit.Maui.Sample.Pages.Behaviors.EmailValidationBehaviorPage">

    <ContentPage.Resources>
        <Style x:Key="InvalidEntryStyle" TargetType="Entry">
            <Setter Property="TextColor" Value="Red" />
        </Style>
        <Style x:Key="ValidEntryStyle" TargetType="Entry">
            <Setter Property="TextColor" Value="Green" />
        </Style>
    </ContentPage.Resources>

    <Entry>
        <Entry.Behaviors>
            <toolkit:EmailValidationBehavior 
                InvalidStyle="{StaticResource InvalidEntryStyle}"
                ValidStyle="{StaticResource ValidEntryStyle}"
                Flags="ValidateOnValueChanged" />
        </Entry.Behaviors>
    </Entry>

</ContentPage>

C#

El EmailValidationBehavior se puede usar de la siguiente manera en C#:

class EmailValidationBehaviorPage : ContentPage
{
    public EmailValidationBehaviorPage()
    {
        var entry = new Entry();

        var validStyle = new Style(typeof(Entry));
        validStyle.Setters.Add(new Setter
        {
            Property = Entry.TextColorProperty,
            Value = Colors.Green
        });

        var invalidStyle = new Style(typeof(Entry));
        invalidStyle.Setters.Add(new Setter
        {
            Property = Entry.TextColorProperty,
            Value = Colors.Red
        });

        var emailValidationBehavior = new EmailValidationBehavior
        {
            InvalidStyle = invalidStyle,
            ValidStyle = validStyle,
            Flags = ValidationFlags.ValidateOnValueChanged
        };

        entry.Behaviors.Add(emailValidationBehavior);

        Content = entry;
    }
}

Marcado de C#

Nuestro paquete CommunityToolkit.Maui.Markup proporciona una forma mucho más concisa de usar este Behavior en C#.

using CommunityToolkit.Maui.Markup;

class EmailValidationBehaviorPage : ContentPage
{
    public EmailValidationBehaviorPage()
    {
        Content = new Entry()
            .Behaviors(new EmailValidationBehavior
            {
                InvalidStyle = new Style<Entry>(Entry.TextColorProperty, Colors.Red),
                ValidStyle = new Style<Entry>(Entry.TextColorProperty, Colors.Green),
                Flags = ValidationFlags.ValidateOnValueChanged
            });
    }
}

En la siguiente captura de pantalla se muestra el objeto EmailValidationBehavior resultante en Android: Captura de pantalla de EmailValidationBehavior en Android

Propiedades

Propiedad Tipo Descripción
DecorationFlags TextDecorationFlags Proporciona un valor enumerado que se usará para establecer cómo controlar los espacios en blanco.
MaximumLength int Longitud máxima del valor que se permitirá.
MinimumLength int Longitud mínima del valor que se permitirá.
RegexOptions RegexOptions Proporciona valores enumerados que se pueden utilizar para establecer las opciones de expresión regular.
RegexPattern string Patrón de expresión regular con la que el valor tendrá que coincidir antes de que se permita.

Propiedades ValidationBehavior

Las siguientes propiedades se implementan en la clase base, public abstract class ValidationBehavior:

Propiedad Tipo Descripción
Flags ValidationFlags Proporciona un valor enumerado que especifica cómo controlar la validación.
ForceValidateCommand ICommand Permite al usuario proporcionar un ICommand personalizado que controle la validación.
InvalidStyle Style Style que se va a aplicar al elemento cuando se produce un error en la validación.
IsNotValid bool Indica si el valor actual se considera o no válido.
IsRunning bool Indica si la validación está en curso ahora (esperando que finalice una llamada asincrónica).
IsValid bool Indica si el valor actual se considera válido o no.
ValidStyle Style Style que se va a aplicar al elemento cuando la validación se realiza correctamente.
Value object El valor que se va a validar.
ValuePropertyName string Permite al usuario invalidar la propiedad que se usará como valor para validar.

Métodos

método Descripción
EmailRegex (estático) Un GeneratedRegex para que coincida con una entrada es una dirección de correo electrónico válida.
EmailDomainRegex (estático) Un GeneratedRegex para que coincida con el dominio de una dirección de correo electrónico.

Ejemplos

Puede encontrar un ejemplo de este comportamiento en acción en la Aplicación de muestra del kit de herramientas de la comunidad de .NET MAUI.

API

Puede encontrar el código fuente de EmailValidationBehavior en el repositorio de GitHub del Kit de herramientas de la comunidad de .NET MAUI.