Partage via


Duration Structure

Définition

Représente la durée d’activité d’une chronologie , ou plus généralement une durée qui prend également en charge deux valeurs spéciales Automatic et Forever.

/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
struct Duration
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public struct Duration
Public Structure Duration
<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
-or-
<object property="Automatic" .../>
-or-
<object property="Forever" .../>
Héritage
Duration
Attributs

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v1.0)

Remarques

Une valeur Duration est utilisée pour ces propriétés :

Pour plus d’informations sur l’utilisation d’une durée dans le cadre d’une chronologie, y compris des exemples de code, consultez Animations storyboard ou Timeline.Duration.

Utilisation de XAML

La façon la plus courante d’utiliser une valeur Duration dans le Windows Runtime consiste à la définir à l’aide d’un attribut XAML. Lorsque vous définissez une valeur en XAML, vous fournissez une chaîne et la chaîne est analysée à l’aide du format de chaîne hours:minutes:seconds et de ses variantes, comme décrit ici.

<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
  • days : valeur entière supérieure ou égale à 0 qui spécifie le nombre de jours.
  • hours : valeur entière comprise entre 0 et 23 qui spécifie le nombre d’heures. Si vous spécifiez une durée en tant qu’attribut XAML, un composant hours est requis, même s’il est 0.
  • minutes : valeur entière comprise entre 0 et 59 qui spécifie le nombre de minutes. Si vous spécifiez une durée en tant qu’attribut XAML, un composant minutes est requis, même s’il est 0.
  • secondes : valeur entière comprise entre 0 et 59 qui spécifie le nombre de secondes. Définissez les composants hours:minutes sur 0:0 si vous ne définissez qu’un composant en secondes.
  • fractionalSeconds : facultatif. Valeur décimale composée de 1 à 7 positions au-delà de la virgule décimale, qui spécifie des fractions de secondes.
<object property="Automatic" .../>
  • Automatique : chaîne Automaticlittérale .
<object property="Forever" .../>
  • Forever : chaîne littérale Forever.

La spécification d’une durée à l’aide d’une chaîne qui ressemble à un entier, sans caractères littéraux utilisés dans le format de chaîne hours:minutes:seconds tel que : ou , entraîne une durée de ce nombre de jours ! Il s’agit rarement du résultat prévu. En règle générale, vous spécifiez des durées d’animation en secondes. Par conséquent, la chaîne Duration doit inclure les valeurs 0 précédentes pour les heures et les minutes, avec littéral : caractères comme séparateurs entre heures et minutes, et entre minutes et secondes. Par exemple, pour spécifier une durée de cinq secondes, la chaîne correcte pour une valeur d’attribut XAML est « 0:0:5 » (« 0:0:0:05 » est équivalent).

Remarques sur la syntaxe XAML

Dans la grammaire indiquée dans l’utilisation de l’attribut XAML, [ ] (crochets) indique des valeurs facultatives, [ ] ne sont pas des littéraux. Les caractères : (deux-points) et . (point) sont tous deux des littéraux et délimitent la forme de chaîne h:m:s d’un intervalle de temps commun, ou les valeurs facultatives days et fractionalSeconds .

Utilisez les chaînes littérales « Automatic » et « Forever » comme valeurs d’attribut XAML si vous souhaitez une durée dont le comportement est documenté par Duration.Automatic et Duration.Forever.

Duration ne prend pas en charge la syntaxe d’un élément objet et vous ne pouvez pas déclarer une durée en tant qu’élément partageable dans un ResourceDictionary.

Utilisation du code

Si vous utilisez une durée dans le code, une durée utilise une définition de temps qui est également utilisée par la structure TimeSpan . La structure TimeSpan est représentée par System.TimeSpan si vous programmez en C# ou Microsoft Visual Basic, ou par Windows.Foundation.TimeSpan si vous programmez en C++.

  • C# ou Microsoft Visual Basic System.TimeSpan a une méthode Parse qui utilise le format de chaîne hours:minutes:seconds . Si vous devez créer une valeur Duration dans le code, vous pouvez appeler le constructeur Duration et fournir l’argument System.TimeSpan en appelant TimeSpan.Parse avec une chaîne hours:minutes:seconds . Utilisez toujours la culture « en-us » pour analyser cette chaîne, car c’est ainsi que XAML interprète le format de chaîne, et vous ne devez pas utiliser d’entrées spécifiques à la culture pour animer des minutages.
  • Windows.Foundation.TimeSpan C++ ne prend pas en charge un moyen de le créer au format de chaîne hours:minutes:seconds. Vous devez utiliser DurationHelper.FromTimeSpan et effectuer la conversion vous-même pour déterminer la façon dont les heures:minutes:secondes se convertissent en valeur de données Windows.Foundation.TimeSpan C++, qui est une valeur en millisecondes.

Automatique et pour toujours

Automatic et Forever sont des valeurs qui ont une signification spéciale pour une valeur de propriété Duration. Pour Microsoft .NET, celles-ci sont représentées par les propriétés statiques Automatic et Forever.

La valeur Automatique appliquée en XAML ou dans le code entraîne un comportement différent sur un Storyboard par rapport à une animation.

  • Pour Storyboard, la valeur Automatic définit l’intervalle de temps effectif sur l’heure de fin de son animation enfant la plus longue, de sorte qu’aucune capture ne se produit pour une animation enfant.
  • Pour les animations, la valeur Automatique entraîne le comportement par lequel l’animation s’exécute avec un intervalle de temps de 1 seconde (0:0:1). Ce comportement est rarement souhaitable comme résultat final, mais il vous permet de voir l’animation en cours d’exécution pendant le test, avant d’avoir établi un dernier intervalle de temps.

Important

L’utilisation de Forever pour une animation est une utilisation déconseillée et est rarement utilisée. Il en résulte une animation qui n’avance jamais par rapport à sa valeur de départ, quelles que soient les valeurs fournies pour From/To, les images clés, etc. Si vous souhaitez qu’une animation se répète en continu, utilisez RepeatBehavior="Forever", et non Duration="Forever".

Projection et membres de Duration

Si vous utilisez un langage Microsoft .NET (C# ou Microsoft Visual Basic) ou des extensions de composant Visual C++ (C++/CX), Duration a des membres non-données disponibles, et ses membres de données sont exposés en tant que propriétés en lecture-écriture, et non en tant que champs. La durée expose plusieurs opérateurs, y compris les opérateurs de comparaison. Consultez Durée dans le navigateur d’API .NET.

Pour Microsoft .NET, Duration expose TimeSpan.Parse pour sa propriété TimeSpan , les opérateurs Implicit et UnaryPlus et les méthodes Add et Subtract . Celles-ci ne sont pas disponibles à partir de la structure dans les extensions de composant Visual C++ (C++/CX), mais vous pouvez utiliser des méthodes DurationHelper équivalentes pour certaines d’entre elles.

Si vous programmez avec C++/WinRT ou la bibliothèque de modèles C++ Windows Runtime (WRL), seuls les champs membres de données existent en tant que membres de durée et vous ne pouvez pas utiliser les méthodes ou propriétés utilitaires de la projection .NET. Le code C++ peut accéder à des méthodes utilitaires similaires qui existent sur la classe DurationHelper . Par exemple, vous pouvez appeler DurationHelper.Compare pour comparer deux valeurs de durée C++. Pour plus d’informations, consultez DurationHelper.

Ce tableau présente les propriétés et méthodes équivalentes disponibles dans .NET et C++.

.NET (Durée) C++ (DurationHelper)
Duration(TimeSpan) FromTimeSpan(TimeSpan)
Automatique Automatique
Toujours Toujours
HasTimeSpan GetHasTimeSpan(Duration)
Add(Duration) Add(Duration, Duration)
Compare(Duration, Duration) Compare(Duration, Duration)
Égal à Equals(Duration, Duration)
Subtract(Duration) Subtract(Duration, Duration)

Champs

TimeSpan

Composant valeur TimeSpan .

Type

Type en tant que membre de l’énumération.

S’applique à

Voir aussi