Condividi tramite


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 Automatic speciali e Forever.

/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
struct Duration
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 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

Commenti

Per queste proprietà viene usato un Duration valore:

Per altre info su come usare come Duration 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 Duration valore nella 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 un Duration oggetto nel codice, un Duration usa una definizione di tempo usata anche dalla TimeSpan struttura . La TimeSpan struttura è 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 Duration valore 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 Automatic valore applicato in XAML o codice comporta un comportamento diverso in uno Storyboard anziché in un'animazione.

  • Per Storyboard, il Automatic valore 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 Automatic valore restituisce 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 Forever di 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 C#, dispone Duration di 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++ Windows Runtime (WRL), esistono solo i campi membro dati come membri di Duratione 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 C++ Duration . 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 TimeSpan valore.

Type

Tipo come membro dell'enumerazione .

Si applica a

Vedi anche