Триггеры в .NET MAUI. Триггеры событий

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

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии