Duration Estrutura

Definição

Representa a duração do tempo em que uma Linha do Tempo está ativa ou, geralmente, representa uma duração de tempo que também dá suporte a dois valores especiais Automático e Para Sempre.

/// [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" .../>
Herança
Duration
Atributos

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v1.0)

Comentários

Um valor Duration é usado para estas propriedades:

Para obter mais informações sobre como usar uma Duração como parte de uma Linha do Tempo, incluindo exemplos de código, consulte Animações com storyboard ou Timeline.Duration.

Uso de XAML

A maneira mais comum de usar um valor Duration no Windows Runtime é defini-lo usando um atributo XAML. Quando você define um valor em XAML, está fornecendo uma cadeia de caracteres e a cadeia de caracteres é analisada usando o formato de cadeia de caracteres hours:minutes:seconds e suas variantes, conforme descrito aqui.

<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
  • days: um valor inteiro maior ou igual a 0 que especifica o número de dias.
  • hours: um valor inteiro entre 0 e 23 que especifica o número de horas. Se você especificar uma Duração como um atributo XAML, um componente de horas será necessário, mesmo que seja 0.
  • minutes: um valor inteiro entre 0 e 59 que especifica o número de minutos. Se você especificar uma Duração como um atributo XAML, um componente de minutos será necessário, mesmo que seja 0.
  • seconds: um valor inteiro entre 0 e 59 que especifica o número de segundos. Defina componentes hours:minutes como 0:0 se você estiver definindo apenas um componente de segundos.
  • fractionalSeconds: opcional. Um valor decimal que consiste em 1 a 7 posições após o ponto decimal, que especifica segundos fracionários.
<object property="Automatic" .../>
  • Automático: a cadeia de caracteres Automaticliteral .
<object property="Forever" .../>
  • Forever: a cadeia de caracteres Foreverliteral .

Especificar uma Duração usando uma cadeia de caracteres semelhante a um inteiro, sem caracteres literais usados no formato de cadeia de caractereshours:minutes:seconds, como : ou . resultará em uma Duração desse número de dias! Este raramente é o resultado pretendido. Normalmente, você especifica durações de animação em segundos. Dessa forma, a cadeia de caracteres Duration deve incluir valores anteriores de 0 para horas e minutos, com literal : caracteres como separadores entre horas e minutos e entre minutos e segundos. Por exemplo, para especificar uma Duração de cinco segundos, a cadeia de caracteres correta para um valor de atributo XAML é "0:0:5" ("0:0:05" é equivalente).

Observações sobre a sintaxe XAML

Na gramática mostrada no uso do atributo XAML, [ ] (colchetes) indica valores opcionais, [ ] não são literais. Os caracteres : (dois pontos) e . (ponto) são literais e delimitam a forma de cadeia de caracteres h:m:s de um período de tempo comum ou os valores opcionais days e fractionalSeconds .

Use as cadeias de caracteres literais "Automatic" e "Forever" como valores de atributo XAML se quiser uma Duration que tenha um comportamento conforme documentado por Duration.Automatic e Duration.Forever.

Duração não dá suporte a uma sintaxe de elemento de objeto e você não pode declarar uma Duration como um item compartilhável em um ResourceDictionary.

Uso de código

Se você estiver usando uma Duração no código, uma Duração usará uma definição de tempo que também é usada pela estrutura TimeSpan . A estrutura TimeSpan será representada por System.TimeSpan se você estiver programando usando C# ou Microsoft Visual Basic ou Windows.Foundation.TimeSpan se estiver programando usando C++.

  • O C# ou o Microsoft Visual Basic System.TimeSpan tem um método Parse que usa o formato de cadeia de caracteres hours:minutes:seconds . Se você precisar criar um valor Duration no código, poderá chamar o construtor Duration e fornecer o argumento System.TimeSpan chamando TimeSpan.Parse com uma cadeia de caracteres hours:minutes:seconds . Sempre use a cultura "en-us" para analisar essa cadeia de caracteres, pois é assim que o XAML interpreta o formato de cadeia de caracteres e você não deve usar entradas específicas da cultura para animar intervalos de qualquer maneira.
  • O C++ Windows.Foundation.TimeSpan não dá suporte a uma maneira de criá-lo em um formato de cadeia de caractereshours:minutes:seconds. Você precisará usar DurationHelper.FromTimeSpan e fazer a conversão por conta própria para a conversão de horas:minutos:segundos para o valor de dados C++ Windows.Foundation.TimeSpan , que é um valor em milissegundos.

Automático e Para Sempre

Automatic e Forever são valores que contêm um significado especial para um valor da propriedade Duration. Para o Microsoft .NET, elas são representadas pelas propriedades estáticas Automatic e Forever.

O valor Automático aplicado em XAML ou no código resulta em um comportamento diferente em um Storyboard em vez de uma animação.

  • Para Storyboard, o valor Automático define o período de tempo efetivo como igual à hora de término de sua animação filho de execução mais longa, de modo que nenhum recorte ocorra para qualquer animação filho.
  • Para animações, o valor Automático resulta no comportamento pelo qual a animação é executada com um intervalo de tempo de 1 segundo (0:0:1). Esse comportamento raramente é desejável como resultado final, mas permite que você veja a animação em execução durante o teste, antes de estabelecer um período final.

Importante

Usar Forever para uma animação é um uso preterido e raramente é usado. Isso resulta em uma animação que nunca avança de seu valor inicial, independentemente de quais valores foram fornecidos para De/Para, quadros-chave e assim por diante. Se você quiser que uma animação se repita continuamente, use RepeatBehavior="Forever", não Duration="Forever".

Projeção e membros da Duração

Se você estiver usando uma linguagem Microsoft .NET (C# ou Microsoft Visual Basic) ou extensões de componente do Visual C++ (C++/CX), Duration terá membros não dados disponíveis e seus membros de dados serão expostos como propriedades de leitura/gravação, não campos. Duração expõe vários operadores, incluindo operadores de comparação. Confira Duração no Navegador de API do .NET.

Para o Microsoft .NET, Duration expõe TimeSpan.Parse para sua propriedade TimeSpan , operadores Implicit e UnaryPlus e métodos Add e Subtract . Eles não estão disponíveis na estrutura em extensões de componente do Visual C++ (C++/CX), mas você pode usar métodos DurationHelper equivalentes para alguns deles.

Se você estiver programando com C++/WinRT ou a WRL (Biblioteca de Modelos do Windows Runtime C++), somente os campos de membro de dados existirão como membros de Duration e você não poderá usar os métodos ou propriedades do utilitário da projeção do .NET. O código C++ pode acessar métodos utilitários semelhantes que existem na classe DurationHelper . Por exemplo, você pode chamar DurationHelper.Compare para comparar dois valores de Duração do C++. Para obter mais informações, consulte DurationHelper.

Esta tabela mostra as propriedades e os métodos equivalentes disponíveis no .NET e no C++.

.NET (Duração) C++ (DurationHelper)
Duration(TimeSpan) FromTimeSpan(TimeSpan)
Automático Automático
Sempre Sempre
HasTimeSpan GetHasTimeSpan(Duration)
Add(Duration) Add(Duration, Duration)
Compare(Duration, Duration) Compare(Duration, Duration)
Igual a Equals(Duration, Duration)
Subtrair(Duração) Subtrair(Duração, Duração)

Campos

TimeSpan

O componente de valor TimeSpan .

Type

O tipo como um membro da enumeração .

Aplica-se a

Confira também