Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это MultiValidationBehavior
позволяет Behavior
пользователю объединять несколько проверяющих элементов для проверки ввода текста в зависимости от указанных параметров. Например, элемент управления можно стильировать по-разному в зависимости от того, Entry
предоставляется ли допустимый или недопустимый текстовый ввод. Благодаря тому, что пользователь сможет объединить несколько существующих проверяющих устройств, он обеспечивает высокую степень настройки при проверке.
Внимание
Поведение сообщества .NET MAUI набор средств не задает BindingContext
поведение, так как поведение можно совместно использовать и применять к нескольким элементам управления с помощью стилей. Дополнительные сведения см. в статье о поведении .NET MAUI
Синтаксис
В следующих примерах показано, как добавить его MultiValidationBehavior
Entry
и включить в нее 4 различных поведения проверки для принудительного применения политики паролей.
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>
Использование MultiValidationBehavior
Его MultiValidationBehavior
можно использовать следующим образом в 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#
Его MultiValidationBehavior
можно использовать следующим образом в 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#
Наш CommunityToolkit.Maui.Markup
пакет предоставляет гораздо более краткий способ использования этого Behavior
в 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");
}
}
На следующем снимок экрана показан полученный MultiValidationBehavior на Android:
Свойства
Здесь MultiValidationBehavior
приведены общие свойства проверки, как показано ниже.
Свойства ValidationBehavior
Следующие свойства реализуются в базовом классе: public abstract class ValidationBehavior
Свойство | Type | Описание |
---|---|---|
Flags |
ValidationFlags |
Предоставляет перечисленное значение, указывающее способ обработки проверки. |
ForceValidateCommand |
ICommand |
Позволяет пользователю предоставлять пользователь ICommand , который обрабатывает принудительное выполнение проверки. |
InvalidStyle |
Style |
При Style сбое проверки применяется к элементу. |
IsNotValid |
bool |
Указывает, считается ли текущим значение недопустимым. |
IsRunning |
bool |
Указывает, выполняется ли проверка сейчас (ожидание асинхронного вызова). |
IsValid |
bool |
Указывает, считается ли текущим значение допустимым. |
ValidStyle |
Style |
Применяется Style к элементу при успешной проверке. |
Value |
object |
Проверяемое значение. |
ValuePropertyName |
string |
Позволяет пользователю переопределить свойство, которое будет использоваться в качестве значения для проверки. |
Примеры
Пример этого поведения можно найти в действии в сообществе .NET MAUI набор средств пример приложения.
API
Исходный код MultiValidationBehavior
можно найти в репозитории сообщества .NET MAUI набор средств GitHub.
.NET MAUI Community Toolkit