2010-09-02 10 views
14

En WPF estoy intentando enlazar una propiedad Date a Datagrid, y si solo tengo la fecha Property binded como DateTime, puedo ordenarlo en la cuadrícula de datos.DateTime No se muestra con el formato de cultura actual en Datagrid, ListView

Y aquí tengo que mostrar la fecha regional, si el usuario cambia la configuración de región e idioma, la aplicación debe mostrar el formato de hora resectada.

Aquí viene el problema, cuando la fecha está en formato de cadena, se calza de acuerdo con la configuración de región, pero cuando la propiedad está en formato DateTime, la fecha se imprime en formato estadounidense en lugar de mostrarse con la configuración de región actual.

Por lo tanto, si he formato de cadena de la clasificación por el trabajo de la columna no funciona, y si su en formato DateTime, no convertir a la configuración regional

Respuesta

26

Eso es porque el sistema de enlace utiliza la cultura definida por la propiedad FrameworkElement.Language, que no coincide automáticamente con la cultura actual (lo cual es un poco tonto IMO, pero así son las cosas ...).

Afortunadamente hay una manera más fácil a su alrededor, sólo tiene que reemplazar los metadatos para la propiedad Language en su aplicación constructor estático, as shown here:

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

Gracias a Lot Thomas, esta es la solución exacta que esperaba. Pero no es esto un error en .NET Framework. – crazy9

+0

Esto ayuda, pero solo nos lleva a una parte del camino. WPF ahora se da cuenta cuando estoy usando una cultura diferente como en-GB, pero todavía no se da cuenta de los cambios a los formatos de región (por ejemplo, cambié en-US en mi máquina para usar aaaa-MM-dd, pero las cuadrículas todavía usa MM/dd/aaaa). –

+0

Muestra el formato correctamente en mi aplicación WPF ahora, es decir, de MM/dd/aaaa a dd/MM/aaaa pero deja caer la parte AM/PM de mi tiempo que necesito. Seguiré investigando. – Thierry

Cuestiones relacionadas