Синтаксис DateTime XAML

Некоторые элементы управления, такие как Calendar и DatePicker, имеют свойства, использующие тип DateTime. Несмотря на то что начальные дата и время для этих элементов управления обычно указываются в коде программной части во время выполнения, их можно указать в коде XAML. Средство синтаксического анализа XAML WPF обрабатывает анализ значений DateTime, используя встроенный синтаксис текста XAML. В этом разделе рассматриваются особенности синтаксиса текста XAML DateTime.

Когда требуется использовать синтаксис DateTime XAML

Задание дат в XAML не всегда обязательно, а иногда даже может быть нежелательно. Например, можно использовать свойство DateTime.Now для инициализации даты во время выполнения или выполнить все корректировки дат для календаря в коде программной части на основе ввода пользователя. Однако существуют сценарии, в рамках которых можно жестко закодировать даты в Calendar и DatePicker в шаблоне элемента управления. В таких случаях необходимо использовать синтаксис XAML DateTime.

Синтаксис DateTime XAML является собственным поведением

DateTime — это класс, который определен в библиотеках базовых классов среды CLR. Из-за особенностей взаимодействия библиотек базовых классов с остальной частью среды CLR невозможно применить атрибут TypeConverterAttribute к классу и использовать преобразователь типов для обработки строк из XAML и их преобразования в DateTime в объектной модели времени выполнения. Нет класса DateTimeConverter, предоставляющего поведение преобразования: поведение преобразования, описанное в этом разделе, является собственным для средства синтаксического анализа XAML WPF.

Строки формата для синтаксиса DateTime XAML

Формат DateTime можно указать с помощью строки формата. Строки формата формализуют синтаксис текста, который может использоваться для создания значения. Значения DateTime для существующих элементов управления WPF, как правило, используют только компоненты даты DateTime, а не компоненты времени.

При указании DateTime в XAML можно использовать любую из этих строк формата взаимозаменяемо.

Можно также использовать форматы и строки формата, которые не рассматриваются в этом разделе. С технической точки зрения XAML для любого значения DateTime, указанного и впоследствии проанализированного анализатором XAML WPF, используется внутренний вызов в DateTime.Parse, и таким образом обеспечивается возможность использовать любую строку, которая принимается DateTime.Parse для входных данных XAML. Дополнительные сведения см. в разделе DateTime.Parse.

Важно!

Синтаксис DateTime XAML всегда использует en-us как CultureInfo для собственного преобразования. Это поведение не зависит от значения Language или значения xml:lang в XAML, так как преобразование типов на уровне атрибутов XAML работает без этого контекста. Не пытайтесь выполнять интерполяцию показанных здесь строк формата из-за различий региональных параметров, таких как порядок отображения дня и месяца. Показанные здесь строки формата — это именно те строки формата, которые используются при синтаксическом анализе XAML независимо от других параметров языка и региональных параметров.

В следующих разделах описаны некоторые общие строки формата DateTime.

Шаблон краткого формата даты (d)

Ниже показан краткий формат даты для DateTime в XAML.

M/d/YYYY

Это самая простая форма, определяющая все необходимые сведения для типичного использования элементами управления WPF. На нее не влияют случайные смещения часового пояса (по сравнению с компонентом времени), и поэтому она предпочтительнее других форматов.

Например, чтобы указать дату 1 июня 2010 г., используйте следующую строку.

3/1/2010

Дополнительные сведения см. в разделе DateTimeFormatInfo.ShortDatePattern.

Сортируемый шаблон даты и времени (s)

Ниже показан сортируемый шаблон DateTime в XAML.

yyyy'-'MM'-'dd'T'HH':'mm':'ss

Например, чтобы указать дату 1 июня 2010 г., используйте следующую строку (все компоненты времени вводятся как 0).

2010-06-01T000:00:00

Шаблон RFC1123 (r)

Шаблон RFC1123 удобен, поскольку он может быть строкой ввода из других генераторов данных, также использующих шаблон RFC1123, в ситуациях инвариантных значений языка и региональных параметров. Ниже показан шаблон RFC1123 DateTime в XAML.

ddd, dd MMM yyyy HH':'mm':'ss 'UTC'

Например, чтобы указать дату 1 июня 2010 г., используйте следующую строку (все компоненты времени вводятся как 0).

Mon, 01 Jun 2010 00:00:00 UTC

Другие форматы и шаблоны

Как уже говорилось ранее, DateTime в XAML можно указать как любую строку, которая принимается в качестве входных данных для DateTime.Parse. К ним относятся другие формализованные форматы (например, UniversalSortableDateTimePattern) и форматы, которые не формализованы как конкретная форма DateTimeFormatInfo. Например, форма YYYY/mm/dd допустима в качестве входных данных DateTime.Parse. Этот раздел не является попыткой описать все возможные форматы: вместо этого рекомендуется использование шаблона короткого формата даты.

См. также