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 Значение используется для этих свойств:
- Временная шкала.Длительность (можно задать в раскадровке или анимации)
- VisualTransition.GeneratedDuration
- RepeatBehavior.Duration
- Windows. Пользовательского интерфейса. Xaml.Controls.MediaElement.NaturalDuration (это использование не является частью сценария раскадровки анимации; все остальные)
Дополнительные сведения о том, как использовать 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++.