Триггеры событий

Последнее обновление: 19.12.2022

Триггеры событий представлены типом EventTrigger и вызываются в ответ на события элемента.

Для применения триггера событий вначале надо создать действие, которое будет вызываться триггером и которое представляет класс TriggerAction.

Итак, добавим в наш проект следующий класс:

public class EntryValidation : TriggerAction<Entry>
{
    protected override void Invoke(Entry sender)
    {
        if (!int.TryParse(sender.Text, out var number))
            sender.TextColor = Colors.Red;
        else
            sender.TextColor = Colors.Green;
    }
}

Действие триггера должно реализовать обощенный класс TriggerAction<T>, где параметр T представляет тип элементов, к которым применяется триггер (в данном случае это тип Entry).

Для определения выполняемого действия необходимо переопределить метод Invoke(), который будет вызываться при генерации события триггера.

В данном случае мы будем ожидать ввод только цифр в поле Entry. Если же будут введены нецифровые символы, то текст поля окрасится в красный цвет, в ином случае - в зеленый цвет.

Теперь применим это действие:

<?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"
             xmlns:local="clr-namespace:HelloApp"
             x:Class="HelloApp.MainPage">
    <StackLayout Padding="20">
        <Entry>
            <Entry.Triggers>
                <EventTrigger Event="TextChanged">
                    <local:EntryValidation />
                </EventTrigger>
            </Entry.Triggers>
        </Entry>
    </StackLayout>
</ContentPage>

Триггер событий также, как и триггер свойств, добавляется в коллекцию Triggers элемента, только теперь он представлен объектом EventTrigger.

Атрибут Event этого объекта указывает на событие, при возникновении которого будет вызываться триггер. В данном случае это событие TextChanged, то есть изменение текста в поле Entry.

И в самом EventTrigger определяется наше действие EntryValidation.

В итоге, если мы введем в поле нецифровые символы, то это цвет текста в поле окрасится в красный цвет:

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

Триггеры событий в коде

Аналогичное применение триггера событий в коде C#:

public partial class StartPage : ContentPage
{
    public StartPage()
    {
        Entry entry = new Entry();
        var trigger = new EventTrigger()
        {
            Event = "TextChanged"
        };
        trigger.Actions.Add(new EntryValidation());
        entry.Triggers.Add(trigger);

        Content = new StackLayout
        {
            Children = { entry }
        };
    }
}

Вначале собственно создается триггер - объект EventTrigger, и с помощью свойства Event у него устанавливается событие.

Далее в коллекцию Actions в триггере добавляется объект EntryValidation, а затем сам триггер добавляется в коллекцию Triggers у элемента Entry.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850