CharactersValidationBehavior

CharactersValidationBehavior 是一种 Behavior,允许用户根据指定的参数验证文本输入。 例如,可以根据提供的文本值是有效还是无效,对 Entry 控件的样式进行区别化设置。 此行为包括内置检查,例如检查特定数量的数字或字母数字字符。

重要

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

语法

以下示例演示如何将 CharactersValidationBehavior 添加到 Entry,并根据输入的文本是否仅包含数字且至少包含 2 个数字来更改 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>

使用 CharactersValidationBehavior

CharactersValidationBehavior 可以在 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.CharactersValidationBehaviorPage">

    <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:CharactersValidationBehavior 
                InvalidStyle="{StaticResource InvalidEntryStyle}"
                ValidStyle="{StaticResource ValidEntryStyle}"
                Flags="ValidateOnValueChanged"
                CharacterType="Digit"
                MinimumCharacterTypeCount="3" />
        </Entry.Behaviors>
    </Entry>

</ContentPage>

C#

CharactersValidationBehavior 可在 C# 中按如下所示方式使用:

class CharactersValidationBehaviorPage : ContentPage
{
    public CharactersValidationBehaviorPage()
    {
        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 charactersValidationBehavior = new CharactersValidationBehavior
        {
            InvalidStyle = invalidStyle,
            ValidStyle = validStyle,
            Flags = ValidationFlags.ValidateOnValueChanged,
            CharacterType = CharacterType.Digit,
            MinimumCharacterTypeCount = 3
        };

        entry.Behaviors.Add(charactersValidationBehavior);

        Content = entry;
    }
}

C# 标记

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

using CommunityToolkit.Maui.Markup;

class CharactersValidationBehaviorPage : ContentPage
{
    public CharactersValidationBehaviorPage()
    {
        Content = new Entry()
            .Behaviors(new CharactersValidationBehavior
            {
                InvalidStyle = new Style<Entry>(Entry.TextColorProperty, Colors.Red),
                ValidStyle = new Style<Entry>(Entry.TextColorProperty, Colors.Green),
                Flags = ValidationFlags.ValidateOnValueChanged,
                CharacterType = CharacterType.Digit,
                MinimumCharacterTypeCount = 3
            });
    }
}

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

属性

属性 类型​​ 描述
CharacterType CharacterType 提供用于设置如何处理比较的枚举值。
DecorationFlags TextDecorationFlags 提供用于设置如何处理空格的枚举值。
MaximumCharacterTypeCount int 所需的最大 CharacterType 字符数。
MaximumLength int 允许的值的最大长度。
MinimumCharacterTypeCount int 所需的最小 CharacterType 字符数。
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 允许用户重写将用作要验证的值的属性。

示例

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

API

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