Syntaxe jazyka XAML DateTime
Některé ovládací prvky, například Calendar a DatePicker, mají vlastnosti, které používají typ DateTime. I když obvykle zadáváte počáteční datum nebo čas těchto ovládacích prvků v kódu za běhu, můžete v XAML zadat počáteční datum nebo čas. Analyzátor WPF XAML zpracovává analýzu DateTime hodnot pomocí integrované textové syntaxe XAML. Toto téma popisuje specifika syntaxe textu XAML DateTime.
Kdy použít syntaxi XAML DateTime
Nastavení dat v XAML není vždy nutné a nemusí být ani žádoucí. Například můžete použít vlastnost DateTime.Now k inicializaci data za běhu aplikace, nebo můžete provést všechny úpravy dat pro kalendář v zázemí kódu na základě uživatelského vstupu. Existují však scénáře, kdy můžete chtít pevně zakódovat data do Calendar a DatePicker v šabloně ovládacího prvku. Pro tyto scénáře je nutné použít syntaxi DateTime XAML.
Syntaxe DateTime v XAML je nativní funkcí
DateTime je třída definovaná v knihovnách základních tříd CLR. Vzhledem k tomu, jak se knihovny základních tříd vztahují ke zbytku MODULU CLR, není možné použít TypeConverterAttribute na třídu a pomocí převaděče typů zpracovávat řetězce z XAML a převést je na DateTime v modelu objektu runtime. Neexistuje žádná třída DateTimeConverter
, která poskytuje chování převodu; chování převodu dané v tomto tématu je nativní pro analyzátor WPF XAML.
Formátovací řetězce pro syntaxi DATETime XAML
Formát pro DateTime můžete určit pomocí formátovacího řetězce. Formátovací řetězce formalizují textovou syntaxi, kterou lze použít k vytvoření hodnoty. Hodnoty DateTime pro existující ovládací prvky WPF obecně využívají pouze datumové komponenty DateTime a nikoli časové komponenty.
Při zadávání DateTime v JAZYCE XAML můžete použít libovolný formátovací řetězec zaměnitelně.
Můžete také použít formáty a formátovací řetězce, které nejsou výslovně uvedeny v tomto tématu. Technicky vzato, kód XAML pro jakoukoli hodnotu DateTime, která je zadána a poté zpracována analyzátorem WPF XAML, využívá interní volání DateTime.Parse. Proto můžete pro vstup XAML použít libovolný řetězec přijatý DateTime.Parse. Další informace najdete v tématu DateTime.Parse.
Důležitý
Syntaxe DateTime XAML vždy používá en-us
jako CultureInfo pro svůj nativní převod. To není ovlivněno hodnotou Language nebo xml:lang
hodnotou v XAML, protože převod typu na úrovni atributu XAML funguje bez tohoto kontextu. Nepokoušejte se interpolovat formátovací řetězce zobrazené zde z důvodu kulturních variací, například pořadí, ve kterém se den a měsíc zobrazují. Zde uvedené řetězce formátu jsou přesné formátovací řetězce použité při analýze XAML bez ohledu na ostatní nastavení jazykové verze.
Následující části popisují některé běžné řetězce formátu DateTime.
Vzor krátkého data ("d")
Následující příklad ukazuje krátký formát data pro DateTime v JAZYCE XAML:
M/d/YYYY
Jedná se o nejjednodušší formulář, který určuje všechny nezbytné informace pro typické použití ovládacími prvky WPF a nemůže být ovlivněn náhodným posunem časového pásma oproti časové komponentě, a proto se doporučuje v jiných formátech.
Pokud chcete například zadat datum 1. června 2010, použijte následující řetězec:
3/1/2010
Další informace najdete v tématu DateTimeFormatInfo.ShortDatePattern.
Seřaditelný vzor data a času ("s")
Následující text ukazuje řaditelný vzor DateTime v XAML:
yyyy'-'MM'-'dd'T'HH':'mm':'ss
Pokud chcete například zadat datum 1. června 2010, použijte následující řetězec (všechny časové komponenty jsou zadány jako 0):
2010-06-01T000:00:00
vzor RFC1123 ("r")
Vzor RFC1123 je užitečný, protože může být řetězcovým vstupem z jiných generátorů dat, které také používají vzor RFC1123 z důvodu nezávislosti na jazykové verzi. Následující příklad ukazuje vzor RFC1123 DateTime v JAZYCE XAML:
ddd, dd MMM yyyy HH':'mm':'ss 'UTC'
Pokud chcete například zadat datum 1. června 2010, použijte následující řetězec (všechny časové komponenty jsou zadány jako 0):
Mon, 01 Jun 2010 00:00:00 UTC
Jiné formáty a vzory
Jak jsme uvedli dříve, DateTime v XAML lze zadat jako libovolný řetězec, který je přijatelný jako vstup pro DateTime.Parse. To zahrnuje další formalizované formáty (například UniversalSortableDateTimePattern) a formáty, které nejsou formalizovány jako konkrétní DateTimeFormatInfo formulář. Například formulář YYYY/mm/dd
je přijatelný jako vstup pro DateTime.Parse. Toto téma se nepokouší popsat všechny možné formáty, které fungují, a místo toho doporučuje krátký vzor kalendářních dat jako standardní postup.
Viz také
- XAML v WPF
.NET Desktop feedback