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