DateTime XAML-Syntax

Vissa kontroller, till exempel Calendar och DatePicker, har egenskaper som använder DateTime typ. Även om du vanligtvis anger ett ursprungligt datum eller en tidpunkt för dessa styrningar i koden bakom under körning, kan du ange ett ursprungligt datum eller en tidpunkt i XAML. WPF XAML-parsern hanterar parsning av DateTime värden med hjälp av en inbyggd XAML-textsyntax. I det här avsnittet beskrivs detaljerna i DateTime XAML-textsyntax.

När du ska använda DateTime XAML-syntax

Det är inte alltid nödvändigt att ange datum i XAML och kanske inte ens är önskvärt. Du kan till exempel använda egenskapen DateTime.Now för att initiera ett datum under körning, eller så kan du göra alla datumjusteringar för en kalender i bakgrundskoden baserat på användarens indata. Det finns dock scenarier där du kanske vill hårdkoda datum till en Calendar och DatePicker i en kontrollmall. Den DateTime XAML-syntaxen måste användas för dessa scenarier.

DateTime XAML-syntax är ett internt beteende

DateTime är en klass som definieras i clr-basklassbiblioteken. På grund av hur basklassbiblioteken relaterar till resten av CLR går det inte att tillämpa TypeConverterAttribute på klassen och använda en typkonverterare för att bearbeta strängar från XAML och konvertera dem till DateTime i körningsobjektmodellen. Det finns ingen DateTimeConverter-klass som tillhandahåller konverteringsbeteendet. konverteringsbeteendet som beskrivs i det här avsnittet är inbyggt i WPF XAML-parsern.

Formatera strängar för DateTime XAML-syntax

Du kan ange formatet för en DateTime med en formatsträng. Formatera strängar formaliserar textsyntaxen som kan användas för att skapa ett värde. DateTime värden för befintliga WPF-kontroller använder vanligtvis endast datumkomponenterna i DateTime och inte tidskomponenterna.

När du anger en DateTime i XAML kan du använda någon av formatsträngarna omväxlande.

Du kan också använda format och formatsträngar som inte visas specifikt i det här avsnittet. Tekniskt sett använder sig XAML för alla DateTime-värden som anges och sedan parsas av WPF XAML-parsern av ett internt anrop till DateTime.Parse, därför kan du använda vilken sträng som helst som accepteras av DateTime.Parse för dina XAML-indata. Mer information finns i DateTime.Parse.

Viktigt!

DateTime XAML-syntaxen använder alltid en-us som CultureInfo för den interna konverteringen. Detta påverkas inte av Language värde eller xml:lang värde i XAML, eftersom XAML-attributnivåkonvertering fungerar utan den kontexten. Försök inte interpolera formatsträngarna som visas här på grund av kulturella variationer, till exempel i vilken ordning dag och månad visas. Formatsträngarna som visas här är de exakta formatsträngar som används vid parsning av XAML oavsett andra kulturinställningar.

I följande avsnitt beskrivs några av de vanliga DateTime formatsträngarna.

Kort datummönster ("d")

Följande visar det korta datumformatet för en DateTime i XAML:

M/d/YYYY

Det här är det enklaste formuläret som anger all nödvändig information för typiska användningar av WPF-kontroller och inte kan påverkas av oavsiktliga tidszonsförskjutningar jämfört med en tidskomponent, och rekommenderas därför i de andra formaten.

Om du till exempel vill ange datumet den 1 juni 2010 använder du följande sträng:

3/1/2010

Mer information finns i DateTimeFormatInfo.ShortDatePattern.

Sorterbart mönster för datum och tid ("s")

Följande visar det sorterbara DateTime mönstret i XAML:

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

Om du till exempel vill ange datumet den 1 juni 2010 använder du följande sträng (tidskomponenter anges alla som 0):

2010-06-01T000:00:00

RFC1123 mönster ("r")

Det RFC1123 mönstret är användbart eftersom det kan vara en stränginmatning från andra datumgeneratorer som också använder RFC1123-mönstret av kulturvarianta skäl. Följande visar RFC1123 DateTime mönster i XAML:

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

Om du till exempel vill ange datumet den 1 juni 2010 använder du följande sträng (tidskomponenter anges alla som 0):

Mon, 01 Jun 2010 00:00:00 UTC

Andra format och mönster

Som tidigare nämnts kan en DateTime i XAML anges som valfri sträng som är acceptabel som indata för DateTime.Parse. Detta inkluderar andra formaliserade format (till exempel UniversalSortableDateTimePattern) och format som inte formaliseras som ett visst DateTimeFormatInfo formulär. Formuläret YYYY/mm/dd kan till exempel godkännas som indata för DateTime.Parse. Det här avsnittet försöker inte beskriva alla möjliga format som fungerar, utan rekommenderar i stället det korta datummönstret som en standardmetod.

Se även