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:
属性
属性 | 类型 | 描述 |
---|---|---|
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
的源代码