Duration Struktur
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt die Dauer der Zeit dar, die eine Zeitachse aktiv ist, oder stellt allgemein eine Dauer dar, die auch zwei spezielle Werte Automatic
und Forever
unterstü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:
- Timeline.Duration (kann entweder auf einem Storyboard oder einer Animation festgelegt werden)
- VisualTransition.GeneratedDuration
- RepeatBehavior.Duration
- Windows.UI.Xaml.Controls.MediaElement.NaturalDuration (diese Verwendung ist nicht Teil des Storyboardanimationsszenarios; alle anderen sind es).
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 dasSystem.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 Duration
vorhanden, 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.
Felder
TimeSpan |
Die |
Type |
Der Typ als Member der Enumeration. |