Duration Struktur

Definition

Stellt die Dauer der Zeit dar, die eine Zeitachse aktiv ist, oder stellt allgemein eine Dauer dar, die auch zwei spezielle Werte Automatic und Foreverunterstützt.

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

Hinweise

Für diese Eigenschaften wird ein Duration Wert verwendet:

Weitere Informationen zur Verwendung eines Duration 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 mithilfe des Zeichenfolgenformats hours:minutes:seconds und der 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.
  • stunden: Ein ganzzahliger Wert zwischen 0 und 23, der die Anzahl der Stunden angibt. Wenn Sie ein Duration-Attribut 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 ein Duration-Attribut 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 über das Dezimalzeichen hinaus besteht, der Bruchsekunden 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 ganzzahligen Zeichenfolge ä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 enthalten, mit Literalzeichen: Als Trennzeichen zwischen Stunden und Minuten sowie zwischen Minuten und Sekunden. Wenn Sie beispielsweise eine Dauer von fünf Sekunden angeben möchten, ist die richtige Zeichenfolge für einen XAML-Attributwert "0:0:5" ("0:0:05" ist gleichwertig).

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 . (Periodenzeichen) sind beide Literale und trennen die h:m:s-Zeichenfolgenform einer gemeinsamen Zeitspanne oder die optionalen Days - und FractionalSeconds-Werte .

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

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

Codeverwendung

Wenn Sie einen Duration im Code verwenden, verwendet ein Duration 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 programmieren, oder Windows.Foundation.TimeSpan , wenn Sie mit C++ programmieren.

  • 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:minutes:seconds-Zeichenfolge aufrufen. Verwenden Sie immer die Kultur "en-us" für die Analyse dieser Zeichenfolge, da XAML das Zeichenfolgenformat so 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 Automatic in XAML oder Code angewendete Wert führt zu einem anderen Verhalten auf einem Storyboard im Gegensatz zu einer Animation.

  • Für Storyboard legt der Wert die Automatic effektive Zeitspanne so fest, dass sie der Endzeit der am längsten ausgeführten untergeordneten Animation entspricht, sodass für eine untergeordnete Animation keine Abschneidung erfolgt.
  • Bei Animationen ergibt der Automatic Wert das 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, ermöglicht es Ihnen jedoch, die ausgeführte Animation während des Tests anzuzeigen, bevor Sie eine endgültige Zeitspanne festgelegt haben.

Wichtig

Die Verwendung Forever für eine Animation ist eine veraltete Verwendung 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 C# verwenden, stehen Duration Nichtdatenmember zur Verfügung, und die zugehörigen Datenmember werden als Eigenschaften mit Lese-/Schreibzugriff und nicht als Felder verfügbar gemacht. Duration 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 subtrahiert-Methoden verfügbar. Diese sind nicht in der Struktur in Visual C++-Komponentenerweiterungen (C++/CX) verfügbar, aber Sie können für einige dieser Methoden gleichwertige DurationHelper-Methoden verwenden.

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

Diese Tabelle zeigt die entsprechenden Eigenschaften und Methoden, 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)
Vergleich(Dauer, Dauer) Vergleich(Dauer, Dauer)
Ist gleich Gleich(Dauer, Dauer)
Subtrahieren(Dauer) Subtrahieren(Dauer, Dauer)

Felder

TimeSpan

Die TimeSpan Wertkomponente.

Type

Der Typ als Member der Enumeration.

Gilt für:

Weitere Informationen