2010-09-02 8 views
14

In WPF Sto tentando di associare una proprietà Date a Datagrid e se ho solo la proprietà Date binded come formato DateTime posso ordinarla nel datagrid.DateTime Non viene visualizzato con il formato currentculture in Datagrid, ListView

E qui devo mostrare la data regionale, se l'utente modifica le impostazioni della regione e della lingua, l'applicazione dovrebbe mostrare il formato dell'ora delle prospettive.

Arriva il problema, quando la data è in formato stringa, calza in base alle impostazioni della regione, ma quando la proprietà è vincolata nel formato DateTime, la data viene predefinita in formato americano anziché visualizzata con le impostazioni dell'area di currect.

Quindi, se ho formato di stringa l'ordinamento dal lavoro della colonna pretende molto, e se il suo in formato DateTime, che si converte in impostazioni internazionali

risposta

26

Questo perché il sistema di attacchi utilizza la cultura definito dalla proprietà FrameworkElement.Language, che non corrisponde automaticamente alla cultura corrente (che è un po 'sciocco IMO, ma è così ...).

Fortunatamente c'è un modo semplice intorno ad esso, è sufficiente sostituire i metadati per la proprietà Language nel costruttore statico applicazione, as shown here:

public partial class App : Application 
{ 
    static App() 
    { 
     FrameworkElement.LanguageProperty.OverrideMetadata(
      typeof(FrameworkElement), 
      new FrameworkPropertyMetadata(
       XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); 
    } 
} 
+3

Grazie mille Thomas, questa è la soluzione esatta che mi aspettavo. Ma non si tratta di un bug in .NET Framework. – crazy9

+0

Questo aiuta, ma ci porta solo in parte. WPF ora capisce quando sto usando una cultura diversa come en-GB, ma ancora non capta le modifiche ai formati regionali (ad esempio, ho cambiato en-US sulla mia macchina per usare yyyy-MM-dd, ma le griglie usa ancora MM/gg/aaaa). –

+0

Mostra correttamente il formato nella mia app WPF ora, cioè da MM/gg/aaaa a gg/MM/aaaa, ma lascia cadere la parte AM/PM del mio tempo di cui ho bisogno. Continuerò a fare ricerche. – Thierry

2

Il Localizzazione campione del WPF Application Framework (WAF) mostra come per risolvere il tuo problema.

+0

ya sicuramente ci penserò, grazie. – crazy9

+0

Questo è eccellente. Grazie! –

Problemi correlati