In this blog post, 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
- Property Trigger executed when a property on a control is set to a particular value.
- Data Trigger to trigger based on the properties of another control value.
- Event Trigger occurs when an event occurs on the control.
- 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 a control is set to a particular value.
Example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Entry Placeholder="Enter Something!"> | |
<Entry.Triggers> | |
<Trigger TargetType="Entry" | |
Property="IsFocused" Value="True"> | |
<Setter Property="BackgroundColor" Value="Gray" /> | |
</Trigger> | |
</Entry.Triggers> | |
</Entry> |
Data Trigger
Data Trigger to trigger based on the properties of another control value.
Example
For this example the will be enabled after entering 6 digits.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Entry x:Name="txtNumber" Placeholder="Enter 6 Digit"></Entry> | |
<Button Text="Click" IsEnabled="False"> | |
<Button.Triggers> | |
<DataTrigger TargetType="Button" | |
Binding="{Binding Source={x:Reference txtNumber}, | |
Path=Text.Length}" | |
Value="6"> | |
<Setter Property="IsEnabled" Value="True" /> | |
</DataTrigger> | |
</Button.Triggers> | |
</Button> |
Event Trigger
Event Trigger occurs when an event occurs on the control.
Example
Following example, when change the text in Entry the event will fire.
Trigger Action
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MonkeyTriggerAction : TriggerAction<Entry> | |
{ | |
protected override void Invoke(Entry sender) | |
{ | |
sender.BackgroundColor = Color.Gray; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
xmlns:local="clr-namespace:XamarinTrigger" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Entry x:Name="txtNumber" Placeholder="Enter something"> | |
<Entry.Triggers> | |
<EventTrigger Event="TextChanged"> | |
<local:MonkeyTriggerAction /> | |
</EventTrigger> | |
</Entry.Triggers> | |
</Entry> |
Multi Trigger
Multi Trigger allows multiple trigger conditions to be set before an action occurs.
Example
The Following example, after entering two field the button will be enabled.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Entry x:Name="txtNumber1" Placeholder="Enter Number1"></Entry> | |
<Entry x:Name="txtNumber2" Placeholder="Enter Number2"></Entry> | |
<Button Text="Click" IsEnabled="False"> | |
<Button.Triggers> | |
<MultiTrigger TargetType="Button"> | |
<MultiTrigger.Conditions> | |
<BindingCondition | |
Binding="{Binding Source={x:Reference txtNumber1}, | |
Path=Text.Length}" | |
Value="1" /> | |
<BindingCondition | |
Binding="{Binding Source={x:Reference txtNumber2}, | |
Path=Text.Length}" | |
Value="1" /> | |
</MultiTrigger.Conditions> | |
<Setter Property="IsEnabled" Value="True" /> | |
</MultiTrigger> | |
</Button.Triggers> | |
</Button> |
I hope you have understood how to use Triggers in Xamarin.Forms..
Thanks for reading. Please share your comments and feedback. Happy Coding :)
Thanks for sharing this informative content , Great work
ReplyDeleteLeanpitch provides online training in Scrum Master during this lockdown period everyone can use it wisely.
CSM online
Thanks for sharing this informative content , Great work
ReplyDeleteLeanpitch provides online training in Product prototyping during this lockdown period everyone can use it wisely.
icp-cat training
Thanks for sharing this informative content , Great work
ReplyDeleteLeanpitch provides online training and certification in Scrum master during this lockdown period everyone can use it wisely.
CSM online
CSM online certification
Thanks for sharing this.,
ReplyDeleteLeanpitch provides crash course in Brain hacks using NLP everyone can use it wisely.
NLP
training
NLP crash course