Compartir a través de


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 Automatic especiales y 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" .../>
Herencia
Duration
Atributos

Comentarios

Se usa un Duration valor para estas propiedades:

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

Uso de XAML

La manera más común de usar un Duration valor en el Windows Runtime es establecerlo mediante un atributo XAML. Al establecer un valor en XAML, se proporciona una cadena y la cadena se analiza con el formato de cadena hours:minutes:seconds y sus variantes, tal 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.
  • hours: 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 valor duration como atributo XAML, se requiere un componente de minutos, incluso si es 0.
  • seconds: 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 después del separador decimal, que especifica fracciones de segundos.
<object property="Automatic" .../>
  • Automático: la cadena Automaticliteral .
<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 para horas y minutos, con caracteres literales : caracteres 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 el formato 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 un valor de atributo Duration que tenga el comportamiento documentado por 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 resourceDictionary.

Uso del código

Si usa un elemento Duration en el código, Duration usa una definición de tiempo que también se usa en la TimeSpan estructura . La TimeSpan estructura 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 Duration valor en el código, puede llamar al constructor Duration y proporcionar el System.TimeSpan argumento llamando a TimeSpan.Parse con una cadena hours:minutes:seconds . Use siempre la referencia cultural "en-us" para analizar esta cadena, ya que así es como XAML interpreta el formato de cadena y no debe usar entradas específicas de la referencia cultural para animar los intervalos de todos modos.
  • Windows.Foundation.TimeSpan de C++ no admite una manera de crearlo en un formato de cadena hours:minutes:seconds. Tendrás que usar DurationHelper.FromTimeSpan y realizar la conversión tú mismo para la forma en que hours:minutes:seconds se convierte en el valor de datos windows.Foundation.TimeSpan de C++, 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 Automatic valor aplicado en XAML o código da como resultado un comportamiento diferente en un guión gráfico en lugar de una animación.

  • En Storyboard, el valor establece que el Automatic 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 Automatic valor 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

El uso Forever de 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 quieres que una animación se repita continuamente, usa RepeatBehavior="Forever", no Duration="Forever".

Proyección y miembros de Duration

Si usa C#, Duration tiene miembros que no son de datos disponibles y sus miembros de datos se exponen como propiedades de lectura y escritura, no como 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 Add y Subtract . No están disponibles en la estructura en extensiones de componentes de Visual C++ (C++/CX), pero puede usar métodos DurationHelper equivalentes para algunos de estos.

Si está programando 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 Durationy 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 C++ Duration . 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 TimeSpan valor.

Type

Tipo como miembro de la enumeración.

Se aplica a

Consulte también