Содержание
Триггеры событий в .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>
.