Een Timer gebruiken
Het programma moet constant de huidige datum en tijd weergeven. U moet dus de tijd zien “vooruitgaan”.
- Start een nieuw Xamarin-project (ik heb het de naam Timer gegeven).
XAML
De XAML bevat twee labels om de datum en tijd weer te geven. De datum wordt wat groter weergegeven.
- Pas de XAML van de pagina Mainpage.xaml als volgt aan:
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Zoeken" x:Class="Zoeken.MainPage"> <StackLayout> <Label x:Name="timeLabel" FontSize="Large" HorizontalOptions="Center" VerticalOptions="EndAndExpand" /> <Label x:Name="dateLabel" HorizontalOptions="Center" VerticalOptions="StartAndExpand" /> </StackLayout> </ContentPage>
Code-behind
Gebruik de methode StartTimer van de Device klasse. De methode StartTimer heeft de volgende syntax:
public static Void StartTimer (TimeSpan interval, Func callback)
De eerste parameter is van het type TimeSpan, voor de tweede parameter moet een callback functie aangemaakt worden die een boolean teruggeeft. Onderstaande code roept iedere seconde TimeSpan.FromSeconds(1)
een functie aan met de naam OnTimerTick.
Device.StartTimer(TimeSpan.FromSeconds(1), OnTimerTick);
De functie OnTimerTick zal eerst België als cultuur instellen. Vergeet niet hiertoe de namespace Globalization toe te voegen using System.Globalization;
.
CultureInfo nlBEFormaat = new CultureInfo("nl-BE");
De huidige datum en tijd wordt opgevraagd en aan een variabele dt toegekend.
DateTime dt = DateTime.Now;
De datum en tijd worden aan hun respectievelijke labels en in de juiste cultuurinstellingen toegekend. Ken ook de juiste formaat toe.
timeLabel.Text = dt.ToString("T", nlBEFormaat);
dateLabel.Text = dt.ToString("D", nlBEFormaat);
Uiteindelijk moet de functie een boolean teruggeven.
return true;
- Pas de code behind in MainPage.xaml.cs als volgt aan.
using System; using System.Globalization; using Xamarin.Forms; namespace Timer { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); Device.StartTimer(TimeSpan.FromSeconds(1), OnTimerTick); } bool OnTimerTick() { CultureInfo nlBEFormaat = new CultureInfo("nl-BE"); DateTime dt = DateTime.Now; timeLabel.Text = dt.ToString("T", nlBEFormaat); dateLabel.Text = dt.ToString("D", nlBEFormaat); return true; } } }