Триггеры в .NET MAUI. Мульти-триггеры

Мульти-триггеры в .NET MAUI — это триггеры, которые применяют значение свойств или выполняют какие-либо действия при выполнении ряда условий. Все виды триггеров, которые мы рассмотрели ранее, срабатывают в момент выполнения одного условия (элемент получил фокус, изменилось свойство объекта и так далее). В мульти-триггерах мы можем определить набор условий и триггер сработает только тогда, когда будут выполнены все указанные условия.

Мульти-триггеры

Мульти-триггер определяется в .NET MAUI с использованием объекта MultiTrigger, в котором используется привязка. Рассмотрим следующий пример:

<?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="MauiApp21.MainPage"
             xmlns:local="clr-namespace:MauiApp21" x:Name="Main">

    <ScrollView>
        <VerticalStackLayout
            Padding="30,0"
            Spacing="25">
            <Label Text="Чтобы активировать режим разработчика введите пароль и включите переключатель"/>
            <Entry Placeholder="Пароль" x:Name="passEntry"/>
            <Label Text="Режим разработчика НЕ активирован" FontAttributes="Bold" TextColor="Red">
                <Label.Triggers>
                    <MultiTrigger TargetType="Label">
                        <MultiTrigger.Conditions>
                            <BindingCondition Binding="{Binding IsToggled, Source={x:Reference Toggler}}" Value="true"/>
                            <BindingCondition Binding="{Binding Source={x:Reference passEntry},Path=Text}" Value="password"/>
                        </MultiTrigger.Conditions>
                        <MultiTrigger.Setters>
                            <Setter Property="Text" Value="Режим разработчика активирован"/>
                            <Setter Property="TextColor" Value="Green"/>
                        </MultiTrigger.Setters>
                        
                    </MultiTrigger>
                </Label.Triggers>
            </Label>
            <Switch x:Name="Toggler"/>
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

Мульти-триггеры определяются также, как и любые триггеры в коллекции Triggers. В нашем примере мы добавили триггер к метке Label, которая по умолчанию имеет красный цвет текста и содержит строку «Режим разработчика НЕ активирован».

Для мульти-триггера определяется свойство TargetType — тип элемента к которому применяется триггер:

<MultiTrigger TargetType="Label">

Все условия, которые должны соблюдаться, чтобы сработал триггер, располагаются в списке Conditions и представляются в виде объектов BindingCondition со свойствами:

  • Binding — указывает привязку
  • Value — значение, которому должно соответствовать условие

Так, в нашем примере, мы определяем два условия: переключатель Switch должен быть включен:

<BindingCondition Binding="{Binding IsToggled, Source={x:Reference Toggler}}" Value="true"/>

текстовое поле Entry должно содержать строку «password»:

<BindingCondition Binding="{Binding Source={x:Reference passEntry},Path=Text}" Value="password"/>

Далее, в списке Setters мы перечисляем все объекты Setter с помощью которых меняем внешний вид метки, а именно — изменяем текст и его цвет:

<MultiTrigger.Setters>
    <Setter Property="Text" Value="Режим разработчика активирован"/>
    <Setter Property="TextColor" Value="Green"/>
</MultiTrigger.Setters>

Запустим приложение. При запуске мы увидим:теперь наберем пароль и включим переключатель: Если теперь снова выключить Switch или набрать неверный пароль, то метка вернется к первоначальному состоянию:

Итого

Мульти-триггеры в .NET MAUI позволяют изменять внешний вид элементов управления при одновременном выполнении ряда условий. Для определения мульти-триггера используется объект MultiTrigger, а для определения его условий — его коллекция Conditions.

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