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


Синтаксис DateTime для XAML

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

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

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

Синтаксис XAML DateTime — это свойственное поведение

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

Форматирование строк для синтаксиса XAML DateTime

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

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

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

Важный

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

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

Шаблон короткой даты ("d")

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

M/d/YYYY

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

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

3/1/2010

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

Шаблон DateTime с сортировкой ("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. Этот раздел не пытается описать все возможные форматы, которые работают, и вместо этого рекомендует шаблон короткой даты в качестве стандартной практики.

См. также