Содержание
Триггеры событий в .NET MAUI выполняют ряд действий в ответ на какое-либо событие. Для определения триггера используется объект EventTrigger.
Триггеры событий
Для определения триггера событий нам потребуется создать класс, наследующий TriggerAction<T>, где T — класс элемента, к которому применяется действие и реализовать в этом классе метод Invoke().
Например, создадим следующий класс:
public class PasswordValidationAction : TriggerAction<Entry>
{
public string ValidPassword { get; set; }
protected override void Invoke(Entry sender)
{
if (sender.Text.Equals(ValidPassword))
{
sender.Background = Colors.LightGreen;
sender.TextColor = Colors.DarkGreen;
}
else
{
sender.Background = Colors.LightPink;
sender.TextColor = Colors.DarkRed;
}
}
}
Класс наследуется от TriggerAction<Entry>, то есть действие триггера будет распространяться на элементы Entry. В методе Invoke() мы проверяем введенное значение в Entry, сравнивая его со значением свойства ValidPassword. Если введенный пользователем текст совпадает со свойством нашего класса, то фон и цвет текста Entry становится зеленым, иначе — красным.
Применим это действие триггера в коде XAML:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiApp18.MainPage"
xmlns:local="clr-namespace:MauiApp18">
<VerticalStackLayout
Padding="30,0"
Spacing="25">
<Entry>
<Entry.Triggers>
<EventTrigger Event="TextChanged">
<EventTrigger.Actions>
<local:PasswordValidationAction ValidPassword="password"/>
</EventTrigger.Actions>
</EventTrigger>
</Entry.Triggers>
</Entry>
</VerticalStackLayout>
</ContentPage>
Для того, чтобы наш триггер действий заработал, мы подключили новое пространство имен в котором расположен класс PasswordValidationAction:
xmlns:local="clr-namespace:MauiApp18"
далее мы добавили новый триггер в список Triggers элемента Entry:
<Entry.Triggers>
<EventTrigger Event="TextChanged">
<EventTrigger.Actions>
<local:PasswordValidationAction ValidPassword="password"/>
</EventTrigger.Actions>
</EventTrigger>
</Entry.Triggers>
Обратите внимание на то, что для работы триггера событий достаточно указать то, событие элемента управления, которое должно привести к выполнению действия триггера. В нашем случае, триггер будет срабатывать на событие TextChanged:
<EventTrigger Event="TextChanged">
В списке триггера Actions мы перечисляем все действия, которые должны выполнится. В нашем случае — это одно действие у которого мы определяем свойство ValidPassword:
<local:PasswordValidationAction ValidPassword="password"/>
Запустим приложение и проверим результат. Так будет выглядеть Entry при запуске:
Так, когда мы начнем вводить текст:
Так, когда будет введен верный пароль:
Итого
Триггеры событий выполняют действия в ответ на какое-либо событие. Для работы триггера необходимо определить класс действия триггера, который наследуется от универсального класса TriggerAction<T>.