Partilhar via


EmailValidationBehavior

O EmailValidationBehavior é um Behavior que permite que os usuários determinem se a inserção de texto é ou não um endereço de email válido. Por exemplo, um controle Entry pode ter um estilo diferente dependendo se um endereço de email válido ou inválido for fornecido. A validação é feita por meio de uma expressão regular que serve para verificar se o texto inserido é ou não um endereço de email válido.

Quando anexado a um InputView (por exemplo Entry, Editor, etc.), EmailValidationBehavior alterará o teclado padrão, Keyboard.Default, para Keyboard.Email. Se um Keyboard não padrão tiver sido especificado para InputView, EmailValidationBehavior não alterará o Keyboard.

Quando desvinculado de um InputView, EmailValidationBehavior mudará Keyboard.Email de volta para Keyboard.Default. Se um Keyboard diferente de Keyboard.Email tiver sido especificado para InputView, EmailValidationBehavior, não alterará o Keyboard ao desanexar.

Importante

Os comportamentos do .NET MAUI Community Toolkit não definem o BindingContext de um comportamento, porque os comportamentos podem ser compartilhados e aplicados a vários controles por meio de estilos. Para mais informações consulte Comportamentos do .NET MAUI

Sintaxe

Os exemplos a seguir mostram como adicionar EmailValidationBehavior a um Entry e alterar o TextColor com base no fato de o texto inserido ser um endereço de email válido.

XAML

Incluir o namespace XAML

Para usar o kit de ferramentas no XAML, o xmlns a seguir precisa ser adicionado à sua página ou exibição:

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

Portanto, o seguinte:

<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>

Seria modificado para incluir o xmlns conforme o seguinte:

<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>

Usando o EmailValidationBehavior

O EmailValidationBehavior pode ser usado da seguinte maneira em 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#

O EmailValidationBehavior pode ser usado da seguinte maneira em 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;
    }
}

Markup do C#

Nosso pacote CommunityToolkit.Maui.Markup fornece uma maneira muito mais concisa de usar esse Behavior em 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
            });
    }
}

A captura de tela a seguir mostra o EmailValidationBehavior resultante no Android: Captura de tela de um EmailValidationBehavior no Android

Propriedades

Propriedade Type Descrição
DecorationFlags TextDecorationFlags Fornece um valor enumerado a ser usado para definir como tratar os espaços em branco.
MaximumLength int O comprimento máximo do valor que será permitido.
MinimumLength int O comprimento mínimo do valor que será permitido.
RegexOptions RegexOptions Fornece valores enumerados para definir opções de expressão regular.
RegexPattern string O padrão de expressão regular que o valor precisará corresponder antes de ele ser permitido.

Propriedades de ValidationBehavior

As seguintes propriedades são implementadas na classe base public abstract class ValidationBehavior:

Propriedade Type Descrição
Flags ValidationFlags Fornece um valor enumerado que especifica como lidar com a validação.
ForceValidateCommand ICommand Permite que o usuário forneça um ICommand personalizado que lida com a validação forçada.
InvalidStyle Style O Style a ser aplicado ao elemento quando a validação falhar.
IsNotValid bool Indica se o valor atual é ou não considerado inválido.
IsRunning bool Indica se a validação está ou não em andamento agora (aguardando uma chamada assíncrona ser concluída).
IsValid bool Indica se o valor atual é ou não considerado válido.
ValidStyle Style O Style a ser aplicado ao elemento quando a validação for bem-sucedida.
Value object O valor a ser validado.
ValuePropertyName string Permite ao usuário substituir a propriedade que será utilizada como valor a ser validado.

Métodos

Método Descrição
EmailRegex (estático) Um GeneratedRegex para corresponder a uma entrada é um endereço de email válido.
EmailDomainRegex (estático) Um GeneratedRegex para corresponder ao domínio de um endereço de email.

Exemplos

Você pode encontrar um exemplo desse comportamento em ação no Aplicativo de exemplo do .NET MAUI Community Toolkit.

API

O código-fonte do EmailValidationBehavior pode ser encontrado no repositório GitHub do .NET MAUI Community Toolkit.