EmailValidationBehavior

EmailValidationBehavior 是一种 Behavior,允许用户确定文本输入是否为有效的电子邮件地址。 例如,可以根据提供的电子邮件地址是否有效,对 Entry 控件的样式进行差异化设置。 验证是通过正则表达式实现的,该表达式用于验证文本输入是否为有效的电子邮件地址。

附加到 InputView(例如 EntryEditor 等)时,EmailValidationBehavior 会将默认键盘 Keyboard.Default 更改为 Keyboard.Email。 如果为 InputView 指定了非默认值 Keyboard,则 EmailValidationBehavior 不会更改 Keyboard

InputView 分离后,EmailValidationBehavior 会将 Keyboard.Email 改回 Keyboard.Default。 如果为 InputView 指定了除 Keyboard.Email 以外的 Keyboard,则 EmailValidationBehavior 不会在分离时更改 Keyboard

重要

.NET MAUI 社区工具包行为不会设置行为的 BindingContext,因为行为可以通过样式共享,并应用于多个控件。 有关详细信息,请参阅 .NET MAUI 行为

语法

以下示例演示如何将 EmailValidationBehavior 添加到 Entry,并基于输入的文本是否为有效的电子邮件地址更改 TextColor

XAML

包括 XAML 命名空间

若要在 XAML 中使用工具包,需要将以下 xmlns 添加到页面或视图中:

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

因此,以下内容:

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

将被修改为包括 xmlns,如下所示:

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

使用 EmailValidationBehavior

EmailValidationBehavior 可以在 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#

EmailValidationBehavior 可在 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;
    }
}

C# 标记

我们的 CommunityToolkit.Maui.Markup 包提供一种更简洁的方式来在 C# 中使用此 Behavior

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
            });
    }
}

以下屏幕截图显示 Android 上生成的 EmailValidationBehavior:Android 上的 EmailValidationBehavior 的屏幕截图

属性

属性 类型​​ 描述
DecorationFlags TextDecorationFlags 提供用于设置如何处理空格的枚举值。
MaximumLength int 允许的值的最大长度。
MinimumLength int 允许的值的最小长度。
RegexOptions RegexOptions 提供用于设置正则表达式选项的枚举值。
RegexPattern string 值在被接受之前必须匹配的正则表达式模式。

ValidationBehavior 属性

以下属性是在基类 public abstract class ValidationBehavior 中实现的:

properties 类型​​ 描述
Flags ValidationFlags 提供一个指定如何处理验证的枚举值。
ForceValidateCommand ICommand 允许用户提供处理强制验证的自定义 ICommand
InvalidStyle Style 验证失败时应用于元素的 Style
IsNotValid bool 指示当前值是否被视为无效。
IsRunning bool 指示验证是否正在进行(一直等待异步调用完成)。
IsValid bool 指示当前值是否被视为有效。
ValidStyle Style 验证成功时应用于元素的 Style
Value object 要验证的值。
ValuePropertyName string 允许用户重写将用作要验证的值的属性。

方法

方法 说明
EmailRegex(静态) 匹配输入内容是有效电子邮件地址的 GeneratedRegex
EmailDomainRegex(静态) 用于匹配电子邮件地址的域的 GeneratedRegex

示例

可以在 .NET MAUI 社区工具包示例应用程序中查找此行为的示例。

API

可以在 .NET MAUI 社区工具包 GitHub 存储库查看EmailValidationBehavior 的源代码