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 (можно задать для раскадровки или анимации)
- VisualTransition.GeneratedDuration
- RepeatBehavior.Duration
- MediaElement.NaturalDuration (это использование не является частью сценария раскадровки анимации; все остальные — ).
Дополнительные сведения об использовании длительности в рамках временной шкалы, включая примеры кода, см. в разделах Раскадровка анимации или 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++.
Поля
TimeSpan |
Компонент значения TimeSpan . |
Type |
Тип в качестве члена перечисления. |