Freigeben über


Duration Struktur

Definition

Stellt die Dauer dar, für die eine Zeitachse aktiv ist, oder im Allgemeinen eine Dauer, die auch die beiden speziellen Werte Automatic und Forever unterstützt.

/// [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" .../>
Vererbung
Duration
Attribute

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Hinweise

Für diese Eigenschaften wird ein Duration-Wert verwendet:

Weitere Informationen zur Verwendung einer Dauer als Teil einer Zeitachse, einschließlich Codebeispielen, finden Sie unter Storyboardanimationen oder Timeline.Duration.

XAML-Verwendung

Die häufigste Möglichkeit, einen Duration-Wert im Windows-Runtime zu verwenden, besteht darin, ihn mithilfe eines XAML-Attributs festzulegen. Wenn Sie einen Wert in XAML festlegen, geben Sie eine Zeichenfolge an, und die Zeichenfolge wird mit dem Zeichenfolgenformat hours:minutes:seconds und den zugehörigen Varianten analysiert, wie hier beschrieben.

<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
  • days: Ein ganzzahliger Wert größer oder gleich 0, der die Anzahl der Tage angibt.
  • hours: Ein ganzzahliger Wert zwischen 0 und 23, der die Anzahl der Stunden angibt. Wenn Sie eine Dauer als XAML-Attribut angeben, ist eine Stundenkomponente erforderlich, auch wenn sie 0 ist.
  • minuten: Ein ganzzahliger Wert zwischen 0 und 59, der die Anzahl der Minuten angibt. Wenn Sie eine Dauer als XAML-Attribut angeben, ist eine Minutenkomponente erforderlich, auch wenn sie 0 ist.
  • sekunden: Ein ganzzahliger Wert zwischen 0 und 59, der die Anzahl der Sekunden angibt. Legen Sie Stunden:Minuten-Komponenten auf 0:0 fest, wenn Sie nur eine Sekundenkomponente festlegen.
  • fractionalSeconds: Optional. Ein Dezimalwert, der aus 1 bis 7 Positionen hinter dem Dezimaltrennzeichen besteht, der Sekundenbruchteile angibt.
<object property="Automatic" .../>
  • Automatisch: Die Literalzeichenfolge Automatic.
<object property="Forever" .../>
  • Forever: Die Literalzeichenfolge Forever.

Wenn Sie eine Dauer mithilfe einer Zeichenfolge angeben, die einer ganzen Zahl ähnelt, ohne dass literale Zeichen im Zeichenfolgenformat stunden:minuten:sekunden verwendet werden, z. B.: oder . ergibt sich eine Dauer dieser Anzahl von Tagen! Dies ist selten das beabsichtigte Ergebnis. In der Regel geben Sie die Dauer der Animation in Sekunden an. Daher muss die Dauerzeichenfolge vorangehende 0 Werte für Stunden und Minuten mit Literalzeichen enthalten: Zeichen als Trennzeichen zwischen Stunden und Minuten sowie zwischen Minuten und Sekunden. Wenn Sie beispielsweise eine Dauer von fünf Sekunden angeben möchten, lautet die richtige Zeichenfolge für einen XAML-Attributwert "0:0:5" ("0:0:05" entspricht).

Hinweise zur XAML-Syntax

In der in der XAML-Attributverwendung gezeigten Grammatik gibt [ ] (eckige Klammern) optionale Werte an, die [ ] sind keine Literale. Die Zeichen : (Doppelpunkt) und . (Punkt) sind beide Literale und trennen die h:m:s-Zeichenfolgenform einer gemeinsamen Zeitspanne oder die optionalen Tage und FractionalSeconds-Werte .

Verwenden Sie die Literalzeichenfolgen "Automatic" und "Forever" als XAML-Attributwerte, wenn Sie eine Dauer wünschen, deren Verhalten von Duration.Automatic und Duration.Forever dokumentiert ist.

Duration unterstützt keine Objektelementsyntax, und Sie können eine Dauer nicht als freigegebenes Element in einem ResourceDictionary deklarieren.

Codeverwendung

Wenn Sie eine Dauer im Code verwenden, verwendet eine Dauer eine Definition der Zeit, die auch von der TimeSpan-Struktur verwendet wird. Die TimeSpan-Struktur wird durch System.TimeSpan dargestellt, wenn Sie mit C# oder Microsoft Visual Basic oder Windows.Foundation.TimeSpan programmieren, wenn Sie mit C++ programmieren.

  • Das C#- oder Microsoft Visual Basic-System.TimeSpan verfügt über eine Parse-Methode , die das Zeichenfolgenformat hours:minutes:seconds verwendet. Wenn Sie einen Duration-Wert im Code erstellen müssen, können Sie den Duration-Konstruktor aufrufen und das System.TimeSpan-Argument angeben, indem Sie TimeSpan.Parse mit einer Stunden:Minuten:Sekundenzeichenfolge aufrufen. Verwenden Sie zum Analysieren dieser Zeichenfolge immer die Kultur "en-us", da XAML auf diese Weise das Zeichenfolgenformat interpretiert, und Sie sollten sowieso keine kulturspezifischen Eingaben zum Animieren von Timings verwenden.
  • Die C++- Datei "Windows.Foundation.TimeSpan " unterstützt keine Möglichkeit, sie im Zeichenfolgenformat "Stunden:Minuten:Sekunden " zu erstellen. Sie müssen DurationHelper.FromTimeSpan verwenden und die Konvertierung selbst durchführen, damit stunden:minuten:sekunden in den C++-Datenwert Windows.Foundation.TimeSpan konvertiert wird, der ein Wert in Millisekunden ist.

Automatisch und für immer

Automatic und Forever sind Werte, die eine besondere Bedeutung für einen Duration-Eigenschaftswert haben. Für Microsoft .NET werden diese durch die statischen Eigenschaften Automatic und Forever dargestellt.

Der in XAML oder Code angewendete Automatische Wert führt zu einem anderen Verhalten auf einem Storyboard als bei einer Animation.

  • Für Storyboard legt der Wert Automatic die effektive Zeitspanne so fest, dass sie der Endzeit der am längsten ausgeführten untergeordneten Animation entspricht, sodass für untergeordnete Animationen kein Clipping erfolgt.
  • Für Animationen führt der Wert Automatic zu dem Verhalten, bei dem die Animation mit einer Zeitspanne von 1 Sekunde (0:0:1) ausgeführt wird. Dieses Verhalten ist selten als Endergebnis wünschenswert, aber es ermöglicht Es Ihnen, die ausgeführte Animation während des Tests anzuzeigen, bevor Sie eine endgültige Zeitspanne festgelegt haben.

Wichtig

Die Verwendung von Forever für eine Animation ist veraltet und wird selten verwendet. Dies führt zu einer Animation, die nie vom Startwert entfernt wird, unabhängig davon, welche Werte für From/To, Keyframes usw. bereitgestellt wurden. Wenn eine Animation kontinuierlich wiederholt werden soll, verwenden Sie RepeatBehavior="Forever", nicht Duration="Forever".

Projektion und Elemente der Dauer

Wenn Sie eine Microsoft .NET-Sprache (C# oder Microsoft Visual Basic) oder Visual C++-Komponentenerweiterungen (C++/CX) verwenden, sind keine Datenmember für Duration verfügbar, und die zugehörigen Datenmember werden als Eigenschaften mit Lese-/Schreibzugriff und nicht als Felder verfügbar gemacht. Die Dauer macht mehrere Operatoren verfügbar, einschließlich Vergleichsoperatoren. Weitere Informationen finden Sie unter Dauer im .NET-API-Browser.

Für Microsoft .NET macht Duration TimeSpan.Parse für die TimeSpan-Eigenschaft , implizite und UnaryPlus-Operatoren sowie Add - und Subtrahieren-Methoden verfügbar. Diese sind in der Struktur in Visual C++-Komponentenerweiterungen (C++/CX) nicht verfügbar, aber Sie können für einige dieser Komponenten gleichwertige DurationHelper-Methoden verwenden.

Wenn Sie mit C++/WinRT oder der Windows-Runtime C++-Vorlagenbibliothek (WRL) programmieren, sind nur die Datenmemberfelder als Elemente von Duration vorhanden, und Sie können die Hilfsprogrammmethoden oder -eigenschaften der .NET-Projektion nicht verwenden. C++-Code kann auf ähnliche Hilfsprogrammmethoden zugreifen, die in der DurationHelper-Klasse vorhanden sind. Sie können beispielsweise DurationHelper.Compare aufrufen, um zwei C++-Dauerwerte zu vergleichen. Weitere Informationen finden Sie unter DurationHelper.

In dieser Tabelle sind die entsprechenden Eigenschaften und Methoden aufgeführt, die in .NET und C++ verfügbar sind.

.NET (Dauer) C++ (DurationHelper)
Duration(TimeSpan) FromTimeSpan(TimeSpan)
Automatisch Automatisch
Ewig Ewig
HasTimeSpan GetHasTimeSpan(Duration)
Add(Duration) Add(Duration, Duration)
Compare(Duration, Duration) Compare(Duration, Duration)
Ist gleich Equals(Duration, Duration)
Subtrahieren(Dauer) Subtrahieren(Dauer, Dauer)

Felder

TimeSpan

Die TimeSpan-Wertkomponente .

Type

Der Typ als Member der -Enumeration.

Gilt für:

Weitere Informationen