Partilhar via


Duration Estrutura

Definição

Representa a duração do tempo em que uma Linha do Tempo está ativa ou, em geral, representa uma duração de tempo que também dá suporte a dois valores Automatic especiais e 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" .../>
Herança
Duration
Atributos

Comentários

Um Duration valor é usado para estas propriedades:

Para obter mais informações sobre como usar um Duration 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 Duration valor no Windows Runtime é defini-lo usando um atributo XAML. Quando você define um valor em XAML, você 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.
  • minutos: 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" .../>
  • Para sempre: a cadeia de caracteres Foreverliteral .

Especificar uma Duração usando uma cadeia de caracteres semelhante a um inteiro, sem nenhum caractere literal usado 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 por 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).

Anotações sobre a sintaxe XAML

Na gramática mostrada no uso do atributo XAML, [ ] (colchetes) indica valores opcionais, os [ ] 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 de dias opcionais e fractionalSeconds .

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

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

Uso de código

Se você estiver usando um Duration no código, um Duration usará uma definição de tempo que também é usada pela TimeSpan estrutura. A TimeSpan estrutura será representada por System.TimeSpan se você estiver programando usando C# ou Microsoft Visual Basic ou Windows.Foundation.TimeSpan se você 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 Duration valor no código, poderá chamar o construtor Duration e fornecer o System.TimeSpan argumento 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 de propriedade Duration. Para o Microsoft .NET, elas são representadas pelas propriedades estáticas Automatic e Forever.

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

  • Para Storyboard, o Automatic valor define o período de tempo efetivo como igual ao tempo final 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 Automatic valor 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 de tempo 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 seja repetida continuamente, use RepeatBehavior="Forever", não Duration="Forever".

Projeção e membros da Duração

Se você estiver usando C#, terá Duration membros que não são de dados disponíveis e seus membros de dados serão expostos como propriedades de leitura/gravação, não campos. Duration expõe vários operadores, incluindo operadores de comparação. Consulte 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 do Duratione 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 C++ Duration . Para obter mais informações, consulte DurationHelper.

Esta tabela mostra as propriedades e 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 TimeSpan componente de valor.

Type

O tipo como um membro da enumeração.

Aplica-se a

Confira também