Xamarin.Forms TimePicker
Vue Xamarin.Forms qui permet à l’utilisateur de sélectionner une heure.
Appelle Xamarin.FormsTimePicker
le contrôle de sélecteur de temps de la plateforme et permet à l’utilisateur de sélectionner une heure. TimePicker
définit les propriétés suivantes :
Time
de typeTimeSpan
, heure sélectionnée, qui est par défaut deTimeSpan
0. LeTimeSpan
type indique une durée de temps depuis minuit.Format
de typestring
, chaîne de mise en forme .NET standard ou personnalisée , qui prend par défaut la valeur « t », le modèle de temps court.TextColor
de typeColor
, couleur utilisée pour afficher l’heure sélectionnée, qui estColor.Default
par défaut .FontAttributes
de typeFontAttributes
, qui a laFontAtributes.None
valeur par défaut .FontFamily
de typestring
, qui a lanull
valeur par défaut .FontSize
de typedouble
, qui est défini par défaut sur -1.0.CharacterSpacing
, de typedouble
, est l’espacement entre les caractères duTimePicker
texte.
Toutes ces propriétés sont sauvegardées par BindableProperty
des objets, ce qui signifie qu’elles peuvent être mises en forme et que les propriétés peuvent être des cibles de liaisons de données. La Time
propriété a un mode de liaison par défaut , BindingMode.TwoWay
ce qui signifie qu’elle peut être une cible d’une liaison de données dans une application qui utilise l’architecture Model-View-ViewModel (MVVM).
Il TimePicker
n’inclut pas d’événement pour indiquer une nouvelle valeur sélectionnée Time
. Si vous devez être averti de cela, vous pouvez ajouter un gestionnaire pour l’événement PropertyChanged
.
Initialisation de la propriété Time
Dans le code, vous pouvez initialiser la Time
propriété en une valeur de type TimeSpan
:
TimePicker timePicker = new TimePicker
{
Time = new TimeSpan(4, 15, 26) // Time set to "04:15:26"
};
Lorsque la Time
propriété est spécifiée en XAML, la valeur est convertie en valeur TimeSpan
et validée pour s’assurer que le nombre de millisecondes est supérieur ou égal à 0, et que le nombre d’heures est inférieur à 24. Les composants de temps doivent être séparés par des deux-points :
<TimePicker Time="4:15:26" />
Si la BindingContext
propriété de TimePicker
cette propriété est définie sur une instance d’un ViewModel contenant une propriété de type TimeSpan
nommée SelectedTime
(par exemple), vous pouvez instancier ce TimePicker
qui suit :
<TimePicker Time="{Binding SelectedTime}" />
Dans cet exemple, la Time
propriété est initialisée dans la SelectedTime
propriété dans ViewModel. Étant donné que la Time
propriété a un mode de TwoWay
liaison , toute nouvelle fois que l’utilisateur sélectionne est automatiquement propagée au ViewModel.
Si elle TimePicker
ne contient pas de liaison sur sa Time
propriété, une application doit attacher un gestionnaire à l’événement PropertyChanged
pour être informée lorsque l’utilisateur sélectionne une nouvelle heure.
Pour plus d’informations sur la définition des propriétés de police, consultez Polices.
TimePicker et disposition
Il est possible d’utiliser une option de disposition horizontale non contrainte telle que Center
, Start
ou End
avec TimePicker
:
<TimePicker ···
HorizontalOptions="Center"
··· />
Toutefois, cela n’est pas recommandé. Selon la définition de la Format
propriété, les heures sélectionnées peuvent nécessiter des largeurs d’affichage différentes. Par exemple, la chaîne de format « T » entraîne l’affichage TimePicker
des heures d’affichage dans un format long et « 4:15:26 AM » nécessite une largeur d’affichage supérieure au format de temps court (« t ») de « 4:15 AM ». Selon la plateforme, cette différence peut entraîner la modification de la largeur de la TimePicker
vue dans la disposition ou de la troncation de l’affichage.
Conseil
Il est préférable d’utiliser le paramètre par défaut HorizontalOptions
avec TimePicker
Fill
, et de ne pas utiliser une largeur de lors de Auto
la saisie TimePicker
d’une Grid
cellule.
TimePicker dans une application
L’exemple SetTimer inclut TimePicker
, Entry
et Switch
les vues de sa page. Vous TimePicker
pouvez l’utiliser pour sélectionner une heure, et lorsque cette heure se produit, une boîte de dialogue d’alerte s’affiche qui rappelle à l’utilisateur le texte dans le Entry
, à condition que celui-ci Switch
soit activé. Voici le fichier XAML :
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:SetTimer"
x:Class="SetTimer.MainPage">
<StackLayout>
...
<Entry x:Name="_entry"
Placeholder="Enter event to be reminded of" />
<Label Text="Select the time below to be reminded at." />
<TimePicker x:Name="_timePicker"
Time="11:00:00"
Format="T"
PropertyChanged="OnTimePickerPropertyChanged" />
<StackLayout Orientation="Horizontal">
<Label Text="Enable timer:" />
<Switch x:Name="_switch"
HorizontalOptions="EndAndExpand"
Toggled="OnSwitchToggled" />
</StackLayout>
</StackLayout>
</ContentPage>
Vous Entry
pouvez entrer le texte de rappel qui s’affiche lorsque l’heure sélectionnée se produit. La TimePicker
propriété « T » est affectée Format
pour un format de temps long. Il dispose d’un gestionnaire d’événements attaché à l’événement PropertyChanged
et d’un Switch
gestionnaire attaché à son Toggled
événement. Ces gestionnaires d’événements se trouvent dans le fichier code-behind et appellent la SetTriggerTime
méthode :
public partial class MainPage : ContentPage
{
DateTime _triggerTime;
public MainPage()
{
InitializeComponent();
Device.StartTimer(TimeSpan.FromSeconds(1), OnTimerTick);
}
bool OnTimerTick()
{
if (_switch.IsToggled && DateTime.Now >= _triggerTime)
{
_switch.IsToggled = false;
DisplayAlert("Timer Alert", "The '" + _entry.Text + "' timer has elapsed", "OK");
}
return true;
}
void OnTimePickerPropertyChanged(object sender, PropertyChangedEventArgs args)
{
if (args.PropertyName == "Time")
{
SetTriggerTime();
}
}
void OnSwitchToggled(object sender, ToggledEventArgs args)
{
SetTriggerTime();
}
void SetTriggerTime()
{
if (_switch.IsToggled)
{
_triggerTime = DateTime.Today + _timePicker.Time;
if (_triggerTime < DateTime.Now)
{
_triggerTime += TimeSpan.FromDays(1);
}
}
}
}
La SetTriggerTime
méthode calcule une heure du minuteur en fonction de la DateTime.Today
valeur de propriété et de la TimeSpan
valeur retournée par le TimePicker
. Cela est nécessaire, car la DateTime.Today
propriété retourne une DateTime
indication de la date actuelle, mais avec une heure de minuit. Si le temps du minuteur est déjà passé aujourd’hui, il est supposé être demain.
Le minuteur passe toutes les secondes, en exécutant la OnTimerTick
méthode qui vérifie si l’heure Switch
est activée et si l’heure actuelle est supérieure ou égale au temps du minuteur. Lorsque le temps du minuteur se produit, la DisplayAlert
méthode présente une boîte de dialogue d’alerte à l’utilisateur en tant que rappel.
Lorsque l’exemple est exécuté pour la première fois, la TimePicker
vue est initialisée à 11 heures. Appuyez sur l’appel TimePicker
du sélecteur de temps de plateforme. Les plateformes implémentent le sélecteur de temps de manière très différente, mais chaque approche est familière aux utilisateurs de cette plateforme :
Conseil
Sur Android, la TimePicker
boîte de dialogue peut être personnalisée en remplaçant la CreateTimePickerDialog
méthode dans un renderer personnalisé. Cela permet, par exemple, d’ajouter des boutons supplémentaires à la boîte de dialogue.
Après avoir sélectionné une heure, l’heure sélectionnée s’affiche dans les TimePicker
éléments suivants :
À condition qu’elle Switch
soit basculée sur la position, l’application affiche une boîte de dialogue d’alerte rappelant à l’utilisateur le texte du Entry
moment où l’heure sélectionnée se produit :
Dès que la boîte de dialogue d’alerte s’affiche, elle Switch
est basculée vers la position désactivée.