MultiValidationBehavior
MultiValidationBehavior
è un oggetto Behavior
che consente all'utente di combinare più validator per convalidare l'input di testo a seconda dei parametri specificati. Ad esempio, è possibile applicare uno stile diverso a un Entry
controllo a seconda che venga fornito un input di testo valido o non valido. Consentendo all'utente di concatenare più validator esistenti, offre un elevato grado di personalizzazione quando si tratta di convalida.
Importante
I comportamenti di .NET MAUI Community Toolkit non impostano l'oggetto BindingContext
di un comportamento, perché i comportamenti possono essere condivisi e applicati a più controlli tramite stili. Per altre informazioni, vedere Comportamenti MAUI di .NET
Sintassi
Negli esempi seguenti viene illustrato come aggiungere MultiValidationBehavior
a e Entry
includere 4 comportamenti di convalida diversi per applicare un criterio password.
XAML
Inclusione dello spazio dei nomi XAML
Per usare il toolkit in XAML, è necessario aggiungere le informazioni seguenti xmlns
nella pagina o nella visualizzazione:
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
Di conseguenza:
<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>
Verrà modificato in modo da includere l'oggetto xmlns
come indicato di seguito:
<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>
Uso di MultiValidationBehavior
Può MultiValidationBehavior
essere usato come segue in 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.MultiValidationBehaviorPage">
<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
IsPassword="True"
Placeholder="Password">
<Entry.Behaviors>
<toolkit:MultiValidationBehavior
InvalidStyle="{StaticResource InvalidEntryStyle}"
ValidStyle="{StaticResource ValidEntryStyle}"
Flags="ValidateOnValueChanged">
<toolkit:CharactersValidationBehavior
x:Name="DigitValidation"
CharacterType="Digit"
MinimumCharacterTypeCount="1"
toolkit:MultiValidationBehavior.Error="1 digit"
RegexPattern="" />
<toolkit:CharactersValidationBehavior
x:Name="UpperValidation"
CharacterType="UppercaseLetter"
MinimumCharacterTypeCount="1"
toolkit:MultiValidationBehavior.Error="1 upper case"
RegexPattern="" />
<toolkit:CharactersValidationBehavior
x:Name="SymbolValidation"
CharacterType="NonAlphanumericSymbol"
MinimumCharacterTypeCount="1"
toolkit:MultiValidationBehavior.Error="1 symbol"
RegexPattern="" />
<toolkit:CharactersValidationBehavior
x:Name="AnyValidation"
CharacterType="Any"
MinimumCharacterTypeCount="8"
toolkit:MultiValidationBehavior.Error="8 characters"
RegexPattern="" />
</toolkit:MultiValidationBehavior>
</Entry.Behaviors>
</Entry>
</ContentPage>
C#
Può MultiValidationBehavior
essere usato come indicato di seguito in C#:
class MultiValidationBehaviorPage : ContentPage
{
public MultiValidationBehaviorPage()
{
var entry = new Entry
{
IsPassword = true,
Placeholder = "Password"
};
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 atLeastOneDigit = new CharactersValidationBehavior
{
Flags = ValidationFlags.ValidateOnValueChanged,
CharacterType = CharacterType.Digit,
MinimumCharacterCount = 1
};
MultiValidationBehavior.SetError(atLeastOneDigit, "1 digit");
var atLeastUpperCase = new CharactersValidationBehavior
{
Flags = ValidationFlags.ValidateOnValueChanged,
CharacterType = CharacterType.UppercaseLetter,
MinimumCharacterCount = 1
};
MultiValidationBehavior.SetError(atLeastUpperCase, "1 upper case");
var atLeastOneSymbol = new CharactersValidationBehavior
{
Flags = ValidationFlags.ValidateOnValueChanged,
CharacterType = CharacterType.NonAlphanumericSymbol,
MinimumCharacterCount = 1
};
MultiValidationBehavior.SetError(atLeastOneSymbol, "1 symbol");
var atLeastEightCharacters = new CharactersValidationBehavior
{
Flags = ValidationFlags.ValidateOnValueChanged,
CharacterType = CharacterType.Any,
MinimumCharacterCount = 1
};
MultiValidationBehavior.SetError(atLeastEightCharacters, "8 characters");
var multiValidationBehavior = new MultiValidationBehavior
{
InvalidStyle = invalidStyle,
ValidStyle = validStyle,
Flags = ValidationFlags.ValidateOnValueChanged,
Children =
{
atLeastOneDigit,
atLeastUpperCase,
atLeastOneSymbol,
atLeastEightCharacters
}
};
entry.Behaviors.Add(multiValidationBehavior);
Content = entry;
}
}
C# Markup
Il CommunityToolkit.Maui.Markup
pacchetto offre un modo molto più conciso per usarlo Behavior
in C#.
using CommunityToolkit.Maui.Markup;
class MultiValidationBehaviorPage : ContentPage
{
public MultiValidationBehaviorPage()
{
Content = new Entry()
.Behaviors(new MultiValidationBehavior
{
InvalidStyle = new Style<Entry>(Entry.TextColorProperty, Colors.Red),
ValidStyle = new Style<Entry>(Entry.TextColorProperty, Colors.Green),
Flags = ValidationFlags.ValidateOnValueChanged,
Children =
{
new CharactersValidationBehavior
{
Flags = ValidationFlags.ValidateOnValueChanged,
CharacterType = CharacterType.Digit,
MinimumCharacterCount = 1
}
.Assign(out var atLeastOneDigit),
new CharactersValidationBehavior
{
Flags = ValidationFlags.ValidateOnValueChanged,
CharacterType = CharacterType.UppercaseLetter,
MinimumCharacterCount = 1
}
.Assign(out var atLeastUpperCase),
new CharactersValidationBehavior
{
Flags = ValidationFlags.ValidateOnValueChanged,
CharacterType = CharacterType.NonAlphanumericSymbol,
MinimumCharacterCount = 1
}
.Assign(out var atLeastOneSymbol),
new CharactersValidationBehavior
{
Flags = ValidationFlags.ValidateOnValueChanged,
CharacterType = CharacterType.Any,
MinimumCharacterCount = 8
}
.Assign(out var atLeastEightCharacters),
}
});
MultiValidationBehavior.SetError(atLeastOneDigit, "1 digit");
MultiValidationBehavior.SetError(atLeastUpperCase, "1 upper case");
MultiValidationBehavior.SetError(atLeastOneSymbol, "1 symbol");
MultiValidationBehavior.SetError(atLeastEightCharacters, "8 characters");
}
}
Lo screenshot seguente mostra l'oggetto MultiValidationBehavior risultante in Android:
Proprietà
MultiValidationBehavior
fornisce le proprietà di convalida comuni come indicato di seguito.
Proprietà ValidationBehavior
Le proprietà seguenti vengono implementate nella classe base : public abstract class ValidationBehavior
Proprietà | Type | Descrizione |
---|---|---|
Flags |
ValidationFlags |
Fornisce un valore enumerato che specifica come gestire la convalida. |
ForceValidateCommand |
ICommand |
Consente all'utente di fornire un oggetto personalizzato ICommand che gestisce la convalida forzata. |
InvalidStyle |
Style |
Oggetto Style da applicare all'elemento in caso di esito negativo della convalida. |
IsNotValid |
bool |
Indica se il valore corrente è considerato non valido. |
IsRunning |
bool |
Indica se la convalida è in corso ora (in attesa del completamento di una chiamata asincrona). |
IsValid |
bool |
Indica se il valore corrente è considerato valido o meno. |
ValidStyle |
Style |
Oggetto Style da applicare all'elemento quando la convalida ha esito positivo. |
Value |
object |
Valore da convalidare. |
ValuePropertyName |
string |
Consente all'utente di eseguire l'override della proprietà che verrà utilizzata come valore da convalidare. |
Esempi
È possibile trovare un esempio di questo comportamento in azione nell'applicazione di esempio .NET MAUI Community Toolkit.
API
È possibile trovare il codice sorgente per MultiValidationBehavior
over nel repository GitHub di .NET MAUI Community Toolkit.
.NET MAUI Community Toolkit