NumericValidationBehavior
是一种 Behavior
,允许用户确定文本输入是否为有效的数值。 例如,可以根据提供的数字输入是有效还是无效,对 Entry
的样式进行区别化设置。
重要
.NET MAUI 社区工具包行为不会设置行为的 BindingContext
,因为可以通过样式共享行为,并将其应用于多个控件。 有关详细信息,请参阅 .NET MAUI 行为
语法
以下示例演示如何将 NumericValidationBehavior
添加到 Entry
,并在输入的数字被视为无效(不介于 1 到 100 之间)时更改 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>
使用 NumericValidationBehavior
NumericValidationBehavior
可以在 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.NumericValidationBehaviorPage">
<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 Keyboard="Numeric">
<Entry.Behaviors>
<toolkit:NumericValidationBehavior
InvalidStyle="{StaticResource InvalidEntryStyle}"
ValidStyle="{StaticResource ValidEntryStyle}"
Flags="ValidateOnValueChanged"
MinimumValue="1.0"
MaximumValue="100.0"
MaximumDecimalPlaces="2" />
</Entry.Behaviors>
</Entry>
</ContentPage>
C#
NumericValidationBehavior
可在 C# 中按如下所示方式使用:
class NumericValidationBehaviorPage : ContentPage
{
public NumericValidationBehaviorPage()
{
var entry = new Entry
{
Keyboard = Keyboard.Numeric
};
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 numericValidationBehavior = new NumericValidationBehavior
{
InvalidStyle = invalidStyle,
ValidStyle = validStyle,
Flags = ValidationFlags.ValidateOnValueChanged,
MinimumValue = 1.0,
MaximumValue = 100.0,
MaximumDecimalPlaces = 2
};
entry.Behaviors.Add(numericValidationBehavior);
Content = entry;
}
}
C# 标记
我们的 CommunityToolkit.Maui.Markup
包提供一种更简洁的方式来在 C# 中使用此 Behavior
。
using CommunityToolkit.Maui.Markup;
class NumericValidationBehaviorPage : ContentPage
{
public NumericValidationBehaviorPage()
{
Content = new Entry
{
Keyboard = Keyboard.Numeric
}.Behaviors(new NumericValidationBehavior
{
InvalidStyle = new Style<Entry>(Entry.TextColorProperty, Colors.Red),
ValidStyle = new Style<Entry>(Entry.TextColorProperty, Colors.Green),
Flags = ValidationFlags.ValidateOnValueChanged,
MinimumValue = 1.0,
MaximumValue = 100.0,
MaximumDecimalPlaces = 2
});
}
}
属性
属性 | 类型 | 描述 |
---|---|---|
MaximumDecimalPlaces |
double |
允许的最大小数位数。 |
MinimumDecimalPlaces |
double |
允许的最小小数位数。 |
MaximumValue |
double |
允许的最大数值。 |
MinimumValue |
double |
允许的最小数值。 |
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 存储库查看NumericValidationBehavior
的源代码