Xamarin.Forms - Working With Triggers

In this article, you will learn how to use Triggers in Xamarin.Forms.

Introduction

 
Xamarin.Forms code runs on multiple platforms - each of which has its own filesystem. This means that reading and writing files is most easily done using the native file APIs on each platform. Alternatively, embedded resources are a simpler solution to distribute data files with an app.
 

Triggers

 
Triggers allow you to express actions declaratively in XAML that change the appearance of controls based on events or property changes.
 
Triggers Types
  1. Property Trigger executed when a property on control is set to a particular value.
  2. Data Trigger to trigger based on the properties of another control value.
  3. Event Trigger occurs when an event occurs on the control.
  4. Multi-Trigger allows multiple trigger conditions to be set before an action occurs.
Prerequisites
  • Visual Studio 2017 or later (Windows or Mac)

Setting up a Xamarin.Forms Project

 
Start by creating a new Xamarin.Forms project. You’ll learn more by going through the steps yourself.
 
Visual Studio 2019 has more options in the opening window. Clone or check out the code from any repository or, open a project or solution for your computer.
 
Now, you need to click "Create a new project".
 
 
Now, filter by Project Type: Mobile
 
Choose the Mobile App (Xamarin. forms) project under C# and Mobile.
 
Name your app. You probably want your project and solution to use the same name as your app. Put it on your preferred location for projects and click "Create".
 
Now, select the blank app and target platforms - Android, iOS and Windows (UWP).
Subsequently, go to the solution. In there, you get all the files and sources of your project (.NET Standard). Now, select the XAML page and double-click to open the MainPage.Xaml page.
 
You now have a basic Xamarin.Forms app. Click the Play button to try it out.
 

Property Trigger

 
Property Trigger executed when a property on control is set to a particular value.
 
Example
  1. <Entry Placeholder="Enter Something!">  
  2.             <Entry.Triggers>  
  3.                 <Trigger TargetType="Entry"  
  4.              Property="IsFocused" Value="True">  
  5.                     <Setter Property="BackgroundColor" Value="Gray" />  
  6.                 </Trigger>  
  7.             </Entry.Triggers>  
  8.         </Entry>  
Click the Play button to try it out,
 
 

Data Trigger

 
Data Trigger to trigger based on the properties of another control value.
 
Example
 
For this example, the trigger will be enabled after entering 6 digits.
  1. <Entry x:Name="txtNumber" Placeholder="Enter 6 Digit"></Entry>  
  2.         <Button Text="Click" IsEnabled="False">  
  3.             <Button.Triggers>  
  4.                 <DataTrigger TargetType="Button"  
  5.          Binding="{Binding Source={x:Reference txtNumber},  
  6.                                            Path=Text.Length}"  
  7.          Value="6">  
  8.                     <Setter Property="IsEnabled" Value="True" />  
  9.                 </DataTrigger>  
  10.             </Button.Triggers>  
  11.         </Button>  
Click the Play button to try it out.
 
 
 
 

Event Trigger

 
Event Trigger occurs when an event occurs on the control.
 
Example
 
In the following example, when we change the text in Entry, the event will get fired.
 

Trigger Action

  1. public class MonkeyTriggerAction : TriggerAction<Entry>  
  2.     {  
  3.         protected override void Invoke(Entry sender)  
  4.         {  
  5.             sender.BackgroundColor = Color.Gray;  
  6.         }  
  7.     }  
Include following namespace
  1. xmlns:local="clr-namespace:XamarinTrigger"  
Implement in xaml
  1. <Entry x:Name="txtNumber" Placeholder="Enter something">  
  2.             <Entry.Triggers>  
  3.                 <EventTrigger Event="TextChanged">  
  4.                     <local:MonkeyTriggerAction />  
  5.                 </EventTrigger>  
  6.             </Entry.Triggers>  
  7.         </Entry>  
Click the "Play" button to try it out.
 
 
 
 

Multi-Trigger

 
Multi-Trigger allows multiple trigger conditions to be set before an action occurs.
 
Example
 
In the following example, after entering two fields, the button will be enabled.
  1. <Entry x:Name="txtNumber1" Placeholder="Enter Number1"></Entry>  
  2.         <Entry x:Name="txtNumber2" Placeholder="Enter Number2"></Entry>  
  3.         <Button Text="Click" IsEnabled="False">  
  4.             <Button.Triggers>  
  5.                 <MultiTrigger TargetType="Button">  
  6.                     <MultiTrigger.Conditions>  
  7.                         <BindingCondition   
  8.           Binding="{Binding Source={x:Reference txtNumber1},  
  9.                             Path=Text.Length}"  
  10.           Value="1" />  
  11.                         <BindingCondition   
  12.           Binding="{Binding Source={x:Reference txtNumber2},  
  13.                             Path=Text.Length}"  
  14.           Value="1" />  
  15.                     </MultiTrigger.Conditions>  
  16.   
  17.                     <Setter Property="IsEnabled" Value="True" />  
  18.                 </MultiTrigger>  
  19.             </Button.Triggers>  
  20.         </Button>  
Click the "Play" button to try it out.
 
 
 
I hope you have understood how to use Triggers in Xamarin.Forms.
 
Thanks for reading. Please share your comments and feedback. Happy Coding :)