Язык

Duration Структура

Определение

Представляет длительность времени, которое активна временная шкала , или, как правило, представляет длительность времени, которая также поддерживает два специальных значения Automatic и 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" .../>
Наследование
Duration
Атрибуты

Комментарии

Duration Значение используется для этих свойств:

Дополнительные сведения о том, как использовать Duration в рамках временной шкалы, включая примеры кода, см. в разделе " Раскадровка анимаций " или " Временная шкала.Длительность".

Использование XAML

Наиболее распространенный Duration способ использования значения в среда выполнения Windows — задать его с помощью атрибута XAML. При установке значения в XAML вы предоставляете строку, а строка анализируется с помощью формата строки hours:minutes:seconds и его вариантов, как описано здесь.

<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
  • days: целочисленное значение больше или равно 0, указывающее количество дней.
  • часы: целочисленное значение от 0 до 23, указывающее количество часов. Если указать длительность в качестве атрибута XAML, требуется компонент часов, даже если он равен 0.
  • minutes: целочисленное значение от 0 до 59, указывающее количество минут. Если указать длительность в качестве атрибута XAML, требуется компонент минут, даже если он равен 0.
  • секунды: целочисленное значение от 0 до 59, указывающее количество секунд. Задайте для компонентов hours:minutes значение 0:0, если вы задаете только компонент секунд.
  • fractionalSeconds: необязательный. Десятичное значение, состоящее из 1 до 7 позиций за десятичной запятой, указывающее дробные секунды.
<object property="Automatic" .../>
  • Автоматически: литеральная строка Automatic.
<object property="Forever" .../>
  • Forever: литеральная строка Forever.

Указание длительности с помощью строки, которая напоминает целое число, без каких-либо литеральных символов, используемых в формате строки hours:minutes:seconds , например : или . приведет к длительности этого количества дней! Это редко предполагаемый результат. Обычно вы указываете длительность анимации в секундах. Таким образом, строка длительности должна содержать предыдущие 0 значения в часах и минутах, с литеральными : символами в качестве разделителей между часами и минутами, а также между минутами и секундами. Например, чтобы указать длительность в пять секунд, правильная строка для значения атрибута XAML имеет значение "0:0:5" ("0:0:05" эквивалентно).

Заметки о синтаксисе XAML

В грамматике, показанной в использовании атрибута XAML, [ ] (квадратные скобки) указывает необязательные значения, [ ] не являются литералами. Символы : (двоеточие) и ( период) являются литералами и разделяют строковую форму h:m:s общего интервала времени или необязательные дни и значения дробныхseconds .

Используйте литеральные строки "Automatic" и "Forever" в качестве значений атрибута XAML, если требуется длительность, которая имеет поведение, как описано в duration.Automatic и Duration.Forever.

Длительность не поддерживает синтаксис элемента объекта, и вы не можете объявить duration в качестве общего элемента в ResourceDictionary.

Использование кода

Если вы используете Duration код, используется определение времени, Duration которое также используется структурой TimeSpan . Структура TimeSpan представлена System.TimeSpan при программировании с помощью C#или Windows. Foundation.TimeSpan, если вы программируете с помощью C++.

  • В C# System.TimeSpan используется метод Parse , использующий формат строки hours:minutes:seconds . Если необходимо создать Duration значение в коде, можно вызвать конструктор Duration и указать System.TimeSpan аргумент, вызвав TimeSpan.Parse с строкой hours:minutes:seconds . Всегда используйте язык и региональные параметрыen-usдля синтаксического анализа этой строки, так как XAML интерпретирует строковый формат, и вы не должны использовать входные данные, зависящие от языка и региональных параметров, для анимации времени в любом случае.
  • Windows C++. Foundation.TimeSpan не поддерживает способ создания его в формате строки "часы:минуты:секунды". Вам придется использовать DurationHelper.FromTimeSpan и выполнить преобразование самостоятельно для того, как часы:минуты:секунды преобразуются в Windows C++. Значение данных Foundation.TimeSpan, которое является значением в миллисекундах.

Автоматическое и вечное

Automatic и Forever являются значениями, которые содержат специальное значение для значения свойства Duration. Для Microsoft .NET они представлены статическими свойствами Automatic и Forever.

Значение Automatic , примененное в XAML или коде, приводит к поведению в раскадровке в отличие от анимации.

  • Для раскадровкиAutomatic значение задает действующий интервал времени, равный времени окончания его самой длительной дочерней анимации, так что для любой дочерней анимации не возникает обрезки.
  • Для анимаций значение приводит к поведению, Automatic в котором анимация выполняется с интервалом времени 1 секунды (0:0:1). Это поведение редко желательно в качестве конечного результата, но позволяет просматривать выполняющуюся анимацию во время тестирования, прежде чем установить окончательный интервал времени.

Important

Использование Forever анимации является устаревшим использованием и редко используется. Это приводит к анимации, которая никогда не переходит от начального значения, независимо от того, какие значения были предоставлены для from/To, ключевых кадров и т. д. Если вы хотите, чтобы анимация повторялось непрерывно, используйте RepeatBehavior="Forever", а не Duration="Forever".

Проекция и члены длительности

Если вы используете C#, Duration у вас есть элементы, не являющиеся данными, и его члены данных предоставляются как свойства записи для чтения и записи, а не поля. Duration предоставляет несколько операторов, включая операторы сравнения. Просмотр длительности в браузере API .NET.

Для Microsoft .NET длительность предоставляет TimeSpan.Parse для его свойства TimeSpan, неявных и unaryPlus операторов, а также методов Add и Subtract. Они недоступны из структуры в C++ , но для некоторых из них можно использовать эквивалентные методы DurationHelper .

Если вы программируются с помощью C++/WinRT или библиотекишаблонов C++ среда выполнения Windows C++ (WRL), то только поля элементов данных существуют в качестве членовDuration, и нельзя использовать служебные методы или свойства проекции .NET. Код C++ может получить доступ к аналогичным методам служебной программы, существующим в классе DurationHelper . Например, можно вызвать DurationHelper.Compare для сравнения двух значений C++ Duration . Дополнительные сведения см. в разделе DurationHelper.

В этой таблице показаны эквивалентные свойства и методы, доступные в .NET и C++.

.NET (длительность) C++ (DurationHelper)
Duration(TimeSpan) FromTimeSpan(TimeSpan)
Автоматически Автоматически
Навсегда Навсегда
HasTimeSpan GetHasTimeSpan(Duration)
Add(Duration) Add(Duration, Duration)
Compare(Duration, Duration) Compare(Duration, Duration)
Равно Равно(длительность, длительность)
Вычитание (длительность) Вычитание (длительность, длительность)

Поля

Имя Описание
TimeSpan

Компонент TimeSpan значения.

Type

Тип в качестве члена перечисления.

Применяется к

См. также раздел