Duration Struct

Definizione

Rappresenta la durata di tempo in cui una sequenza temporale è attiva o più in genere rappresenta una durata di tempo che supporta anche due valori speciali Automatic e 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" .../>
Ereditarietà
Duration
Attributi

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Commenti

Per queste proprietà viene usato un valore Duration:

Per altre info su come usare una durata come parte di una sequenza temporale, inclusi esempi di codice, vedi Animazioni con storyboard o Timeline.Duration.

Utilizzo di XAML

Il modo più comune per usare un valore Duration nel Windows Runtime consiste nell'impostarlo usando un attributo XAML. Quando imposti un valore in XAML, stai fornendo una stringa e la stringa viene analizzata usando il formato stringa hours:minutes:seconds e le relative varianti, come descritto qui.

<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
  • days: valore intero maggiore o uguale a 0 che specifica il numero di giorni.
  • hours: valore intero compreso tra 0 e 23 che specifica il numero di ore. Se si specifica un valore Duration come attributo XAML, è necessario un componente ore, anche se è 0.
  • minutes: valore intero compreso tra 0 e 59 che specifica il numero di minuti. Se si specifica un attributo Duration come attributo XAML, è necessario un componente minuti, anche se è 0.
  • seconds: valore intero compreso tra 0 e 59 che specifica il numero di secondi. Impostare i componenti hours:minutes come 0:0 se si imposta solo un componente di secondi.
  • fractionalSeconds: facoltativo. Valore decimale costituito da 1 a 7 posizioni oltre il separatore decimale, che specifica i secondi frazionari.
<object property="Automatic" .../>
  • Automatic: stringa letterale Automatic.
<object property="Forever" .../>
  • Forever: stringa letterale Forever.

Se si specifica una durata usando una stringa simile a un numero intero, senza caratteri letterali utilizzati nel formato stringa hours:minutes:seconds , ad esempio : o . genererà un valore duration di tale numero di giorni. Questo è raramente il risultato previsto. In genere si specificano le durate dell'animazione in secondi. Di conseguenza, la stringa Duration deve includere i valori precedenti 0 per ore e minuti, con il valore letterale : caratteri come separatori tra ore e minuti e tra minuti e secondi. Ad esempio, per specificare una durata di cinque secondi, la stringa corretta per un valore di attributo XAML è "0:0:5" ("0:0:05" è equivalente).

Note sulla sintassi XAML

Nella grammatica illustrata nell'utilizzo dell'attributo XAML [ ] (parentesi quadre) indica valori facoltativi, [ ] non sono valori letterali. I caratteri : (due punti) e . (punto) sono entrambi valori letterali e delimitano il formato stringa h:m:s di un intervallo di tempo comune oppure i valorifacoltativi days e fractionalSeconds .

Usa le stringhe letterali "Automatic" e "Forever" come valori di attributo XAML se vuoi un valore duration con comportamento documentato da Duration.Automatic e Duration.Forever.

La durata non supporta la sintassi di un elemento oggetto e non è possibile dichiarare un valore Duration come elemento condivisibile in un oggetto ResourceDictionary.

Utilizzo del codice

Se si usa una durata nel codice, una durata usa una definizione di tempo usata anche dalla struttura TimeSpan . La struttura TimeSpan è rappresentata da System.TimeSpan se si esegue la programmazione con C# o Microsoft Visual Basic o Windows.Foundation.TimeSpan se si esegue la programmazione con C++.

  • C# o Microsoft Visual Basic System.TimeSpan dispone di un metodo Parse che usa il formato stringa hours:minutes:seconds . Se è necessario creare un valore Duration nel codice, è possibile chiamare il costruttore Duration e fornire l'argomento System.TimeSpan chiamando TimeSpan.Parse con una stringa hours:minutes:seconds . Usa sempre le impostazioni cultura "en-us" per analizzare questa stringa, perché questo è il modo in cui XAML interpreta il formato stringa e non dovresti usare input specifici delle impostazioni cultura per animare comunque i tempi.
  • Windows.Foundation.TimeSpan C++ non supporta un modo per crearlo in formato stringa hours:minutes:seconds. Sarà necessario usare DurationHelper.FromTimeSpan ed eseguire manualmente la conversione per la conversione di ore:minuti:secondi nel valore di dati C++ Windows.Foundation.TimeSpan , ovvero un valore espresso in millisecondi.

Automatico e per sempre

Automatic e Forever sono valori che contengono un significato speciale per un valore della proprietà Duration. Per Microsoft .NET, questi sono rappresentati dalle proprietà statiche Automatic e Forever.

Il valore Automatico applicato in XAML o codice comporta un comportamento diverso in uno Storyboard anziché in un'animazione.

  • Per Storyboard, il valore Automatico imposta l'intervallo di tempo effettivo in modo che sia uguale all'ora di fine dell'animazione figlio con esecuzione più lunga, in modo che non si verifichi alcun ritaglio per qualsiasi animazione figlio.
  • Per le animazioni, il valore Automatico determina il comportamento in base al quale l'animazione viene eseguita con un intervallo di tempo di 1 secondo (0:0:1). Questo comportamento è raramente auspicabile come risultato finale, ma consente di visualizzare l'animazione in esecuzione durante il test, prima di aver stabilito un intervallo di tempo finale.

Importante

L'uso di Forever per un'animazione è un utilizzo deprecato e viene usato raramente. Ciò comporta un'animazione che non avanza mai dal valore iniziale, indipendentemente dai valori forniti per From/To, fotogrammi chiave e così via. Se si vuole che un'animazione si ripeta continuamente, usare RepeatBehavior="Forever", non Duration="Forever".

Proiezione e membri della durata

Se si usa un linguaggio Microsoft .NET (C# o Microsoft Visual Basic) o estensioni del componente Visual C++ (C++/CX), Duration include membri non dati disponibili e i relativi membri dati vengono esposti come proprietà di lettura/scrittura, non campi. Duration espone diversi operatori, inclusi gli operatori di confronto. Vedere Duration (Durata ) nel browser API .NET.

Per Microsoft .NET, Duration espone TimeSpan.Parse per i relativi operatori TimeSpan , Implicit e UnaryPlus e Add e Subtract . Non sono disponibili dalla struttura nelle estensioni del componente Visual C++ (C++/CX), ma è possibile usare metodi DurationHelper equivalenti per alcuni di questi.

Se si esegue la programmazione con C++/WinRT o la libreria modelli C++ (WRL) Windows Runtime, esistono solo i campi membro dati come membri di Duration e non è possibile usare i metodi di utilità o le proprietà della proiezione .NET. Il codice C++ può accedere a metodi di utilità simili esistenti nella classe DurationHelper . Ad esempio, è possibile chiamare DurationHelper.Compare per confrontare due valori di durata C++. Per altre info, vedi DurationHelper.

Questa tabella mostra le proprietà e i metodi equivalenti disponibili in .NET e C++.

.NET (durata) C++ (DurationHelper)
Duration(TimeSpan) FromTimeSpan(TimeSpan)
Automatico Automatico
Sempre Sempre
HasTimeSpan GetHasTimeSpan(Duration)
Add(Duration) Add(Duration, Duration)
Compare(Duration, Duration) Compare(Duration, Duration)
È uguale a Equals(Duration, Duration)
Sottrazione(Durata) Sottrazione(Durata, Durata)

Campi

TimeSpan

Componente valore TimeSpan .

Type

Tipo come membro dell'enumerazione .

Si applica a

Vedi anche