Duration Estructura
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
/// [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:
- Timeline.Duration (se puede establecer en un guión gráfico o en una animación)
- VisualTransition.GeneratedDuration
- RepeatBehavior.Duration
- Windows.UI.Xaml.Controls.MediaElement.NaturalDuration (este uso no forma parte del escenario de animación con guion gráfico; todos los demás son)
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
Automatic
literal .
<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 elSystem.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 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 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++.
Campos
TimeSpan |
Componente de |
Type |
Tipo como miembro de la enumeración. |