Duration Estructura

Definición

Representa la duración del tiempo que una escala de tiempo está activa o, más generalmente, representa una duración de tiempo que también admite dos valores especiales Automatic y 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" .../>
Herencia
Duration
Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

Comentarios

Se usa un valor Duration para estas propiedades:

Para obtener más información sobre cómo usar una duración como parte de una escala de tiempo, incluidos ejemplos de código, consulta Animaciones con guion gráfico o Timeline.Duration.

Uso de XAML

La forma más común de usar un valor Duration en el Windows Runtime es establecerlo mediante un atributo XAML. Cuando estableces un valor en XAML, proporcionas una cadena y la cadena se analiza con el formato de cadena hours:minutes:seconds y sus variantes, como se describe aquí.

<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
  • days: valor entero mayor o igual que 0 que especifica el número de días.
  • horas: un valor entero entre 0 y 23 que especifica el número de horas. Si especificas un valor Duration como atributo XAML, se requiere un componente hours, incluso si es 0.
  • minutes: valor entero entre 0 y 59 que especifica el número de minutos. Si especificas un atributo Duration como un atributo XAML, se requiere un componente de minutos, incluso si es 0.
  • seconds: un valor entero entre 0 y 59 que especifica el número de segundos. Establezca los componentes hours:minutes como 0:0 si está estableciendo solo un componente de segundos.
  • fractionalSeconds: opcional. Valor decimal que consta de 1 a 7 posiciones más allá del separador decimal, que especifica fracciones de segundos.
<object property="Automatic" .../>
  • Automático: cadena literal Automatic.
<object property="Forever" .../>
  • Forever: cadena literal Forever.

Especificar una duración con una cadena similar a un entero, sin caracteres literales usados en el formato de cadena hours:minutes:seconds , como : o . dará como resultado una duración de ese número de días. Esto rara vez es el resultado previsto. Normalmente, se especifican duraciones de animación en segundos. Por lo tanto, la cadena Duration debe incluir valores anteriores a 0 durante horas y minutos, con caracteres literales : como separadores entre horas y minutos, y entre minutos y segundos. Por ejemplo, para especificar una duración de cinco segundos, la cadena correcta para un valor de atributo XAML es "0:0:5" ("0:0:05" es equivalente).

Notas sobre la sintaxis XAML

En la gramática que se muestra en el uso del atributo XAML, [ ] (corchetes) indica valores opcionales, [ ] no son literales. Los caracteres : (dos puntos) y . (punto) son literales y delimitan la forma de cadena h:m:s de un intervalo de tiempo común, o los valores opcionales days y fractionalSeconds .

Usa las cadenas literales "Automatic" y "Forever" como valores de atributo XAML si quieres que duration.Automatic y Duration.Forever documentan un comportamiento como lo documenta Duration.Automatic y Duration.Forever.

Duration no admite una sintaxis de elemento de objeto y no se puede declarar duration como un elemento que se puede compartir en un ResourceDictionary.

Uso del código

Si usa una duración en el código, una duración usa una definición de tiempo que también usa la estructura TimeSpan . La estructura TimeSpan se representa mediante System.TimeSpan si está programando con C# o Microsoft Visual Basic, o Windows.Foundation.TimeSpan si está programando con C++.

  • C# o Microsoft Visual Basic System.TimeSpan tiene un método Parse que usa el formato de cadena hours:minutes:seconds . Si necesita crear un valor Duration en el código, puede llamar al constructor Duration y proporcionar el argumento System.TimeSpan llamando a TimeSpan.Parse con una cadena hours:minutes:seconds . Usa siempre la referencia cultural "en-us" para analizar esta cadena, ya que así es como XAML interpreta el formato de cadena y no debes usar entradas específicas de la referencia cultural para animar los tiempos de todos modos.
  • Windows.Foundation.TimeSpan de C++ no admite una manera de crearlo en un formato de cadena hours:minutes:seconds. Tendrá que usar DurationHelper.FromTimeSpan y realizar la conversión usted mismo para el modo en que hours:minutes:seconds se convierte en el valor de datos de C++ Windows.Foundation.TimeSpan , que es un valor en milisegundos.

Automático y para siempre

Automatic y Forever son valores que contienen un significado especial para un valor de propiedad Duration. Para Microsoft .NET, estas se representan mediante las propiedades estáticas Automatic y Forever.

El valor automático aplicado en XAML o código da como resultado un comportamiento diferente en un guión gráfico en lugar de una animación.

  • Para Storyboard, el valor Automático establece que el intervalo de tiempo efectivo sea igual a la hora de finalización de su animación secundaria de ejecución más larga, de modo que no se produzca ningún recorte para ninguna animación secundaria.
  • En el caso de las animaciones, el valor Automático da como resultado el comportamiento en el que la animación se ejecuta con un intervalo de tiempo de 1 segundo (0:0:1). Este comportamiento rara vez es deseable como resultado final, pero le permite ver la animación en ejecución durante las pruebas, antes de haber establecido un intervalo de tiempo final.

Importante

Usar Forever para una animación es un uso en desuso y rara vez se usa. Esto da como resultado una animación que nunca avanza desde su valor inicial, independientemente de los valores proporcionados para From/To, fotogramas clave, etc. Si desea que una animación se repita continuamente, use RepeatBehavior="Forever", no Duration="Forever".

Proyección y miembros de Duration

Si usa un lenguaje .NET de Microsoft (C# o Microsoft Visual Basic) o extensiones de componentes de Visual C++ (C++/CX), Duration tiene miembros que no son de datos disponibles y sus miembros de datos se exponen como propiedades de lectura y escritura, no campos. Duration expone varios operadores, incluidos los operadores de comparación. Consulte Duración en el explorador de API de .NET.

Para Microsoft .NET, Duration expone TimeSpan.Parse para sus operadores TimeSpan , Implicit y UnaryPlus , y los métodos Add y Subtract . No están disponibles en la estructura de extensiones de componentes de Visual C++ (C++/CX), pero puede usar métodos DurationHelper equivalentes para algunos de estos.

Si va a programar con C++/WinRT o con la biblioteca de plantillas de C++ (WRL) de Windows Runtime, solo existen los campos de miembro de datos como miembros de Duration y no puede usar los métodos o propiedades de la utilidad de la proyección de .NET. El código de C++ puede tener acceso a métodos de utilidad similares que existen en la clase DurationHelper . Por ejemplo, puede llamar a DurationHelper.Compare para comparar dos valores de duración de C++. Para obtener más información, consulta DurationHelper.

En esta tabla se muestran las propiedades y métodos equivalentes disponibles en .NET y C++.

.NET (duración) C++ (DurationHelper)
Duration(TimeSpan) FromTimeSpan(TimeSpan)
Automático Automático
Siempre Siempre
HasTimeSpan GetHasTimeSpan(Duration)
Add(Duration) Add(Duration, Duration)
Compare(Duration, Duration) Compare(Duration, Duration)
Es igual a Equals(Duration, Duration)
Rest(Duration) Rest(Duration, Duration)

Campos

TimeSpan

Componente de valor TimeSpan .

Type

Tipo como miembro de la enumeración.

Se aplica a

Consulte también