次の方法で共有


EmailValidationBehavior

EmailValidationBehavior は、テキスト入力が有効なメール アドレスであるかどうかをユーザーが判断できるようにする Behavior です。 たとえば、Entry コントロールは、有効な電子メール アドレスと無効な電子メール アドレスのどちらを指定するかに応じて、コントロールのスタイルを変えることができます。 検証は、テキスト入力が有効な電子メール アドレスであるかどうかを検証するために使用される正規表現によって実現されます。

InputView (例: EntryEditor など) に接続すると、EmailValidationBehavior は既定のキーボードである Keyboard.DefaultKeyboard.Email に変更します。 InputView に既定値以外の Keyboard が指定されている場合、EmailValidationBehaviorKeyboard を変更しません。

InputView からデタッチすると、EmailValidationBehaviorKeyboard.EmailKeyboard.Default に戻します。 InputViewEmailValidationBehaviorKeyboard.Email 以外の Keyboard を指定した場合、デタッチ時の Keyboard は変わりません。

重要

.NET MAUI Community Toolkit のビヘイビアーでは、ビヘイビアーの BindingContext は設定されません。ビヘイビアーはスタイルを利用して共有し、複数のコントロールに適用できるためです。 詳細については、「.NET MAUI のビヘイビアー」を参照してください

構文

次の例では、入力されたテキストが有効な電子メール アドレスであるかどうかに基づいて、EmailValidationBehaviorEntry に追加し、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# Markup

この 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 のスクリーンショット

Properties

プロパティ タイプ 説明
DecorationFlags TextDecorationFlags 空白の処理方法を設定するために使用する列挙値を提供します。
MaximumLength int 許可される値の最大長。
MinimumLength int 許可される値の最小長。
RegexOptions RegexOptions 正規表現オプションを設定するために使用する列挙値を提供します。
RegexPattern string 値が許可される前に一致する必要がある正規表現パターン。

ValidationBehavior のプロパティ

基底クラス public abstract class ValidationBehavior には、次のプロパティが実装されています。

プロパティ タイプ 説明
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 Community Toolkit サンプル アプリケーションで確認できます。

API

EmailValidationBehavior のソース コードは、.NET MAUI Community Toolkit の GitHub リポジトリにあります。