Duration Estrutura
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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:
- Timeline.Duration (pode ser definido em um Storyboard ou em uma animação)
- VisualTransition.GeneratedDuration
- RepeatBehavior.Duration
- Windows.UI.Xaml.Controls.MediaElement.NaturalDuration (esse uso não faz parte do cenário de animação com storyboard; todos os outros são)
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
Automatic
literal .
<object property="Forever" .../>
-
Para sempre: a cadeia de caracteres
Forever
literal .
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 oSystem.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 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 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++.
Campos
TimeSpan |
O |
Type |
O tipo como um membro da enumeração. |