Sintassi DateTime XAML
Alcuni controlli, ad esempio Calendar e DatePicker, hanno proprietà che usano il tipo DateTime. Sebbene in genere specifichi una data o un'ora iniziali per questi controlli nel code-behind in fase di esecuzione, puoi specificare una data o un'ora iniziali in XAML. Il parser XAML WPF gestisce l'analisi dei valori DateTime usando una sintassi di testo XAML predefinita. Questo argomento descrive le specifiche della sintassi del testo XAML DateTime.
Quando utilizzare la sintassi DateTime di XAML
L'impostazione delle date in XAML non è sempre necessaria e potrebbe non essere nemmeno auspicabile. Ad esempio, è possibile utilizzare la proprietà DateTime.Now per inizializzare una data in fase di esecuzione oppure eseguire tutte le modifiche della data per un calendario nel code-behind in base all'input dell'utente. Esistono tuttavia scenari in cui si potrebbe voler inserire in modo fisso date in un Calendar e in un DatePicker in un modello di controllo. La sintassi XAML DateTime deve essere usata per questi scenari.
La sintassi XAML DateTime è un comportamento nativo
DateTime è una classe definita nelle librerie di classi di base di CLR. A causa del modo in cui le librerie di classi di base sono correlate al resto di CLR, non è possibile applicare TypeConverterAttribute alla classe e usare un convertitore di tipi per elaborare le stringhe da XAML e convertirle in DateTime nel modello a oggetti di runtime. Non esiste alcuna classe DateTimeConverter
che fornisce il comportamento di conversione; il comportamento di conversione descritto in questo argomento è nativo del parser XAML WPF.
Formati delle stringhe DateTime per la sintassi XAML
È possibile specificare il formato di un DateTime con una stringa di formato. Le stringhe di formato formalizzano la sintassi di testo che può essere usata per creare un valore. DateTime valori per i controlli WPF esistenti in genere usano solo i componenti di data di DateTime e non i componenti dell'ora.
Quando si specifica un DateTime in XAML, è possibile usare qualsiasi stringa di formato in modo intercambiabile.
È anche possibile usare formati e stringhe di formato non illustrati in modo specifico in questo argomento. Tecnicamente, il codice XAML per qualsiasi valore DateTime specificato e quindi analizzato dal parser XAML WPF usa una chiamata interna a DateTime.Parse, pertanto è possibile usare qualsiasi stringa accettata da DateTime.Parse per l'input XAML. Per altre informazioni, vedere DateTime.Parse.
Importante
La sintassi XAML DateTime usa sempre en-us
come CultureInfo nella conversione nativa. Ciò non è influenzato dal valore Language o dal valore xml:lang
nel codice XAML, perché la conversione del tipo a livello di attributo XAML agisce senza tale contesto. Non tentare di interpolare le stringhe di formato mostrate qui a causa di variazioni culturali, ad esempio l'ordine in cui vengono visualizzati giorno e mese. Le stringhe di formato mostrate di seguito sono le stringhe di formato esatte usate durante l'analisi di XAML indipendentemente dalle impostazioni della cultura.
Le sezioni seguenti descrivono alcune delle stringhe di formato comuni DateTime.
Modello di data breve ("d")
Di seguito viene illustrato il formato di data breve per un DateTime in XAML:
M/d/YYYY
Si tratta del formato più semplice che specifica tutte le informazioni necessarie per gli utilizzi tipici dei controlli WPF e non può essere influenzato da offset accidentali del fuso orario rispetto a un componente ora ed è pertanto consigliato rispetto agli altri formati.
Ad esempio, per specificare la data del 1° giugno 2010, usare la stringa seguente:
3/1/2010
Per altre informazioni, vedere DateTimeFormatInfo.ShortDatePattern.
Il modello DateTime ordinabile ("s")
Di seguito è mostrato il modello DateTime ordinabile in XAML.
yyyy'-'MM'-'dd'T'HH':'mm':'ss
Ad esempio, per specificare la data del 1° giugno 2010, usare la stringa seguente (i componenti dell'ora sono tutti immessi come 0):
2010-06-01T000:00:00
RFC1123 Modello ("r")
Il modello RFC1123 è utile perché potrebbe trattarsi di una stringa di input da altri generatori di dati che usano anche il modello RFC1123 per ragioni legate all'invarianza culturale. Di seguito viene illustrato il modello di RFC1123 DateTime in XAML:
ddd, dd MMM yyyy HH':'mm':'ss 'UTC'
Ad esempio, per specificare la data del 1° giugno 2010, usare la stringa seguente (i componenti dell'ora sono tutti immessi come 0):
Mon, 01 Jun 2010 00:00:00 UTC
Altri formati e modelli
Come indicato in precedenza, un DateTime in XAML può essere specificato come qualsiasi stringa accettabile come input per DateTime.Parse. Sono inclusi altri formati formalizzati (ad esempio UniversalSortableDateTimePattern) e formati non formalizzati come un particolare modulo DateTimeFormatInfo. Ad esempio, il modulo YYYY/mm/dd
è accettabile come input per DateTime.Parse. Questo argomento non tenta di descrivere tutti i formati possibili che funzionano e consiglia invece il modello di data breve come procedura standard.
Vedere anche
.NET Desktop feedback