Поделиться через


Duration Структура

Определение

Представляет длительность активности временной шкалы или, в более общем случае, представляет длительность времени, которая также поддерживает два специальных значения Automatic и Forever.

/// [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" .../>
Наследование
Duration
Атрибуты

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Комментарии

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

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

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

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

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

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

Примечания по синтаксису XAML

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

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

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

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

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

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

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

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

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

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

Важно!

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

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

Если вы используете язык Microsoft .NET (C# или Microsoft Visual Basic) или расширения компонентов Visual C++ (C++/CX), то в duration доступны элементы, не относящиеся к данным, и члены данных предоставляются как свойства чтения и записи, а не поля. Длительность предоставляет несколько операторов, включая операторы сравнения. См . раздел Длительность в браузере API .NET.

Для Microsoft .NET duration предоставляет TimeSpan.Parse для свойств TimeSpan , операторов Неявных и UnaryPlus , а также методов Add и Subtract . Они недоступны из структуры в расширениях компонентов Visual C++ (C++/CX), но для некоторых из них можно использовать эквивалентные методы DurationHelper .

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

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

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

Поля

TimeSpan

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

Type

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

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

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