Содержание
Мульти-триггеры в .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.