EmailValidationBehavior
EmailValidationBehavior
是一种 Behavior
,允许用户确定文本输入是否为有效的电子邮件地址。 例如,可以根据提供的电子邮件地址是否有效,对 Entry
控件的样式进行差异化设置。 验证是通过正则表达式实现的,该表达式用于验证文本输入是否为有效的电子邮件地址。
附加到 InputView
(例如 Entry
、Editor
等)时,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:
属性
属性 | 类型 | 描述 |
---|---|---|
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
的源代码