Синтаксис 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. Этот раздел не является попыткой описать все возможные форматы: вместо этого рекомендуется использование шаблона короткого формата даты.
См. также
.NET Desktop feedback