Składnia XAML Data i godzina
Niektóre kontrolki, takie jak Calendar i DatePicker, mają właściwości używające typu DateTime. Chociaż zazwyczaj określasz początkową datę lub godzinę dla tych kontrolek w kodzie w czasie wykonywania, można określić początkową datę lub godzinę w języku XAML. Analizator XAML WPF obsługuje analizowanie wartości DateTime przy użyciu wbudowanej składni tekstu XAML. W tym temacie opisano specyfikę składni tekstu XAML DateTime.
Kiedy używać składni XAML dateTime
Ustawianie dat w języku XAML nie zawsze jest konieczne i może nawet nie być pożądane. Można na przykład użyć właściwości DateTime.Now, aby zainicjować datę w czasie wykonywania, lub można wykonać wszystkie korekty daty dla kalendarza w kodzie opartym na danych wejściowych użytkownika. Istnieją jednak scenariusze, w których możesz chcieć zaprogramować na stałe daty w Calendar i DatePicker w szablonie kontrolnym. W tych scenariuszach należy użyć składni XAML DateTime.
Składnia XAML DateTime jest zachowaniem natywnym
DateTime to klasa zdefiniowana w bibliotekach klas bazowych środowiska CLR. Ze względu na sposób, w jaki biblioteki klas bazowych odnoszą się do reszty CLR, nie można zastosować TypeConverterAttribute do klasy i użyć konwertera typów do przetwarzania ciągów z XAML i przekonwertować je na DateTime w modelu obiektów czasu wykonywania. Nie ma klasy DateTimeConverter
, która zapewnia zachowanie konwersji; zachowanie konwersji opisane w tym temacie jest natywne dla analizatora XAML WPF.
Formatowanie ciągów dla składni XAML DateTime
Format DateTime można określić za pomocą ciągu formatu. Formatowanie ciągów sformalizuje składnię formatowania, która może być używana do utworzenia wartości. Wartości DateTime dla istniejących kontrolek WPF zazwyczaj wykorzystują tylko składniki daty z DateTime, a nie składniki czasu.
Podczas określania DateTime w języku XAML można używać dowolnych ciągów formatu zamiennie.
Możesz również użyć formatów i ciągów formatu, które nie są specjalnie wyświetlane w tym temacie. Technicznie, XAML dla każdej wartości DateTime, która została określona i następnie przeanalizowana przez analizator XAML WPF, wykorzystuje wewnętrzne wywołanie do DateTime.Parse, dlatego można użyć dowolnego ciągu akceptowanego przez DateTime.Parse dla danych wejściowych XAML. Aby uzyskać więcej informacji, zobacz DateTime.Parse.
Ważny
Składnia XAML typu DateTime zawsze używa en-us
jako CultureInfo na potrzeby konwersji natywnej. Nie ma to wpływu na wartość Language ani wartość xml:lang
w języku XAML, ponieważ konwersja typu XAML na poziomie atrybutu działa bez tego kontekstu. Nie należy próbować interpolować ciągów formatu pokazanych tutaj ze względu na odmiany kulturowe, takie jak kolejność wyświetlania dnia i miesiąca. Przedstawione tutaj ciągi formatu to dokładne ciągi formatu używane podczas analizowania kodu XAML niezależnie od innych ustawień kultury.
W poniższych sekcjach opisano niektóre typowe ciągi formatu DateTime.
Wzorzec daty krótkiej ("d")
Poniżej przedstawiony jest format krótkiej daty dla DateTime w XAML:
M/d/YYYY
Jest to najprostsza forma określająca wszystkie niezbędne informacje dla typowych zastosowań z kontrolkami WPF i nie podlega przypadkowym przesunięciom stref czasowych w porównaniu ze składnikiem czasu, dlatego jest zalecana zamiast innych formatów.
Aby na przykład określić datę 1 czerwca 2010 r., użyj następującego ciągu:
3/1/2010
Aby uzyskać więcej informacji, zobacz DateTimeFormatInfo.ShortDatePattern.
Wzorzec sortowalnej daty i czasu ("s")
Poniżej przedstawiono sortowalny wzorzec DateTime w języku XAML.
yyyy'-'MM'-'dd'T'HH':'mm':'ss
Aby na przykład określić datę 1 czerwca 2010 r., użyj następującego ciągu (wszystkie składniki czasu są wprowadzane jako 0):
2010-06-01T000:00:00
wzorzec RFC1123 ("r")
Wzorzec RFC1123 jest przydatny, ponieważ może być ciągiem wejściowym z innych generatorów dat, które również używają wzorca RFC1123 ze względu na uniwersalność kulturową. Poniżej przedstawiono wzorzec RFC1123 DateTime w języku XAML:
ddd, dd MMM yyyy HH':'mm':'ss 'UTC'
Aby na przykład określić datę 1 czerwca 2010 r., użyj następującego ciągu (wszystkie składniki czasu są wprowadzane jako 0):
Mon, 01 Jun 2010 00:00:00 UTC
Inne formaty i wzorce
Jak wspomniano wcześniej, DateTime w języku XAML można określić jako dowolny ciąg, który jest akceptowalny jako dane wejściowe dla DateTime.Parse. Obejmuje to inne sformalizowane formaty (na przykład UniversalSortableDateTimePattern) i formaty, które nie są sformalizowane jako konkretny DateTimeFormatInfo format. Na przykład formularz YYYY/mm/dd
jest akceptowalny jako dane wejściowe dla DateTime.Parse. Ta sekcja nie próbuje opisać wszystkich możliwych formatów, które są obsługiwane, i zamiast tego zaleca się stosowanie wzorca daty krótkiej jako standardowej praktyki.
Zobacz też
- XAML w WPF
.NET Desktop feedback